Difference between revisions of "Module:Extension"
implement Template:Extension/TypeSwitch, Template:Extension/TypeSwitchNoCats and parts of Template:Extension
>Ricordisamoa |
>Ricordisamoa (implement Template:Extension/TypeSwitch, Template:Extension/TypeSwitchNoCats and parts of Template:Extension) |
||
Line 1: | Line 1: | ||
local | local lang = mw.language.getContentLanguage() | ||
local translation = mw.getCurrentFrame():expandTemplate{ title = 'translation' } | |||
local addr = { | local addr = { | ||
GNU = '//www.gnu.org/', | GNU = '//www.gnu.org/', | ||
Line 18: | Line 18: | ||
['LGPL'] = { '[' .. addr.GNU .. 'copyleft/lesser.html GNU Lesser General Public License]' }, | ['LGPL'] = { '[' .. addr.GNU .. 'copyleft/lesser.html GNU Lesser General Public License]' }, | ||
['LGPL3'] = { '[' .. addr.GNU .. 'licenses/lgpl-3.0.html GNU Lesser General Public License 3.0]' }, | ['LGPL3'] = { '[' .. addr.GNU .. 'licenses/lgpl-3.0.html GNU Lesser General Public License 3.0]' }, | ||
['FDL'] = { '[' .. addr.GNU .. 'licenses/fdl.html GNU Free Documentation License]' } | ['FDL'] = { '[' .. addr.GNU .. 'licenses/fdl.html GNU Free Documentation License]' }, | ||
} | |||
local types = { | |||
ajax = { '[[w:AJAX|Ajax]]', 'Ajax extensions' }, | |||
api = { '[[API:Main page|API]]', 'API extensions' }, | |||
['beta feature'] = { '[[Beta Features|Beta Feature]]', 'Beta Feature extensions' }, | |||
contenthandler = { '[[Manual:ContentHandler|ContentHandler]]', 'ContentHandler extensions' }, | |||
database = { '[[Manual:Database layout|Database]]', 'Database extensions' }, | |||
db = { 'Database', 'Database extensions' }, | |||
['data extraction'] = { 'Data extraction', 'Data extraction extensions' }, | |||
example = { 'Example', 'Extension examples' }, | |||
['extended syntax'] = { '[[Manual:Extending wiki markup|Extended syntax]]', 'Extended syntax extensions' }, | |||
filerepo = { 'File repository', 'File repository extensions' }, | |||
hook = { '[[Manual:Hooks|Hook]]', 'Hook extensions' }, | |||
interface = { 'User interface', 'User interface extensions' }, | |||
link = { '[[Manual:Extending wiki markup|Link markup]]', 'Link markup extensions' }, | |||
media = { 'Media', 'Media handling extensions' }, | |||
mywiki = { '[[Manual:Personalization|MyWiki]]', 'Personalization extensions' }, | |||
notify = { 'Notify', 'Notification extensions' }, | |||
['page action'] = { '[[Manual:Parameters to index.php#Actions|Page action]]', 'Page action extensions' }, | |||
parser = { '[[Manual:Extending wiki markup|Parser extension]]', 'Parser extensions' }, | |||
['parser function'] = { '[[Manual:Parser functions|Parser function]]', 'Parser function extensions' }, | |||
pfunc = { '[[Manual:Parser functions|Parser functions]]', 'Parser function extensions' }, | |||
search = { 'Search', 'Search extensions' }, | |||
skin = { '[[Manual:Skins|Skin]]', 'Skin extensions' }, | |||
special = { '[[Manual:Special pages|Special page]]', 'Special page extensions' }, | |||
['special page'] = { '[[Manual:Special pages|Special page]]', 'Special page extensions' }, | |||
locale = { '[[Manual:Localization|Locale]]', 'Internationalization extensions' }, | |||
tag = { '[[Manual:Tag extensions|Tag]]', 'Tag extensions' }, | |||
['user access'] = { '[[Manual:Security|User access]]', 'User access extensions' }, | |||
['user identity'] = { '[[Manual:Security|User identity]]', 'User identity extensions' }, | |||
['user rights'] = { '[[Manual:Security|User rights]]', 'User rights extensions' }, | |||
['user activity'] = { '[[Manual:Security|User activity]]', 'User activity extensions' }, | |||
variable = { '[[Manual:Variables|Variable]]', 'Variable extensions' }, | |||
-- DEPRECATED TYPES (as per 2007-09 taxonomy discussion) | |||
category = { 'Category', 'Category extensions', deprecated = true }, | |||
form = { 'Form', 'Form extensions', deprecated = true }, | |||
list = { 'List', 'List extensions', deprecated = true }, | |||
namespace = { '[[Manual:Namespaces|Namespace]]', 'Namespace extensions', deprecated = true }, | |||
['table'] = { 'Table', 'Table extensions', deprecated = true }, | |||
} | |||
-- DEPRECATED TYPES (multiple types handled via type1,type2,...) | |||
local deprecatedTypes = { | |||
['link, tag, special'] = { 'link', 'tag', 'special' }, | |||
['parser function, special'] = { 'parser function', 'special page' }, | |||
['tag, parser function'] = { 'tag', 'parser function' }, | |||
['tag, parser function, special'] = { 'tag', 'parser function', 'special page' }, | |||
['tag, special'] = { 'tag', 'special page' }, | |||
['parser, pfunc'] = { 'parser function' }, | |||
['parser, hook, special'] = { 'tag' --[[ sic ]], 'hook', 'special' }, | |||
} | } | ||
- | local function cat( title ) | ||
function p. | return '[[Category:' .. title .. ']]' | ||
end | |||
local function tcat( title ) | |||
return cat( title .. translation ) | |||
end | |||
local function getType( str, str2 ) | |||
local str = mw.ustring.lower( str ) | |||
local cnf = types[str] | |||
local res | |||
if cnf then | |||
res = cnf[1] .. '[[Category:' .. cnf[2] .. translation .. ']]' | |||
if cnf.deprecated then | |||
res = res .. '\'\'-deprecated\'\'' .. | |||
tcat( 'Extensions with deprecated types' ) | |||
end | |||
else | |||
cnf = deprecatedTypes[str] | |||
if cnf then | |||
local dtypes = {} | |||
for _, sstr in ipairs( cnf ) do | |||
table.insert( dtypes, getType( sstr ) ) | |||
end | |||
res = table.concat( dtypes, ', ' ) .. | |||
'<br />\'\'(deprecated, please use [[Template:Extension/doc#type|type1,type2' | |||
if #cnf > 2 then | |||
res = res .. ',type3' | |||
end | |||
res = res .. ']] instead)\'\'' .. tcat( 'Extensions with deprecated types' ) | |||
elseif str == '_missing_' then | |||
res = tcat( 'Extensions with invalid or missing type' ) | |||
elseif str == '_demomode_' then | |||
if str2 then | |||
res = lang:ucfirst( str2 ) | |||
else | |||
res = "''unknown''" | |||
end | |||
else | |||
res = ( str or '\'\'unknown\'\'' ) .. | |||
' [[Template:Extension/doc#type|(\'\'\'\'\'invalid type\'\'\'\'\')]]' .. | |||
tcat( 'Extensions with invalid or missing type' ) | |||
end | |||
end | |||
return res | |||
end | |||
local p = {} | |||
function p.getTypes( frame ) | |||
local args = frame:getParent().args | |||
local res = '' | |||
local params = { | |||
args.type1 or args['type'] or 'missing', | |||
args.type2, | |||
args.type3, | |||
args.type4, | |||
args.type5, | |||
args.type6, | |||
} | |||
for _, param in ipairs( param ) do | |||
if param == nil then | |||
break | |||
end | |||
if args.templatemode == 'nocats' then | |||
res = res .. getType( '_demomode_', param ) | |||
else | |||
res = res .. getType( param ) | |||
end | |||
end | |||
return res | |||
end | end | ||
return p | return p |