Difference between revisions of "Module:Extension"

6,430 bytes added ,  19:47, 27 October 2014
>Ricordisamoa
 
>Ricordisamoa
Line 1: Line 1:
local p = {}
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' },
}
}


-- work in progress
local function cat( title )
function p.license_url( frame )
return '[[Category:' .. title .. ']]'
return licenses[frame.args[1]][1]
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
Anonymous user