More actions
Content deleted Content added
// via Wikitext Extension for VSCode |
// via Wikitext Extension for VSCode |
||
Line 115: | Line 115: | ||
page = a2 |
page = a2 |
||
text = a3 |
text = a3 |
||
textPost = 3 |
|||
elseif a2 then |
elseif a2 then |
||
if contains(namespaces, a1) then |
if contains(namespaces, a1) then |
||
Line 125: | Line 126: | ||
text = a2 |
text = a2 |
||
end |
end |
||
textPost = 2 |
|||
else |
else |
||
ns = findNamespace(a1) |
ns = findNamespace(a1) |
||
page = a1 |
page = a1 |
||
text = a1 |
text = a1 |
||
textPost = 1 |
|||
end |
end |
||
if contains(upperCaseNS, ns) or contains(upperCaseText, text) then |
if contains(upperCaseNS, ns) or contains(upperCaseText, text) then |
Revision as of 00:47, 31 January 2025
Documentation for this module may be created at Module:Link/doc
local p = {}
local namespaces = {
'',
'Core',
'Keyword',
'Category',
'Condition',
'Damage',
'Drain',
'Property',
'Ability',
}
local upperCaseNS = {
'Ability',
'Class',
}
local upperCaseText = {
'Ethereal',
'Ethereal Realm',
'HP',
'MP',
'STR',
'INT',
'MOV',
'SNK',
'PER',
'SIZE',
'P',
'L',
'M',
'R',
'S',
'W',
'Material',
'Material Realm',
'GM',
}
function contains(tbl, value)
for _, v in ipairs(tbl) do
if v == value then
return true
end
end
return false
end
function findNamespace ( title )
for _, namespace in ipairs(namespaces) do
local fullTitle = namespace == '' and title or (namespace .. ':' .. title)
local page = mw.title.new(fullTitle)
if page and page.exists then
return namespace
end
end
return ''
end
function p.l ( frame )
local args = frame.args
local title = args[1]
for _, namespace in ipairs(namespaces) do
local fullTitle = namespace == '' and title or (namespace .. ':' .. title)
local page = mw.title.new(fullTitle)
if page and page.exists then
if namespace == 'Category' then
return ' :' .. fullTitle
else
return fullTitle
end
end
end
return title
end
function p.m ( frame )
local args = frame.args
local a1 = args['i']
local a2 = args['ii']
local a3 = args['iii']
if a1 == ' ' then
a1 = nil
end
if a2 == ' ' then
a2 = nil
end
if a3 == ' ' then
a3 = nil
end
local alc = args['lc']
local auc = args['uc']
if alc == ' ' then
alc = nil
end
if auc == ' ' then
auc = nil
end
local ns = ''
local page = ''
local text = ''
local lc = true
local textPre = ''
local textPost = ''
if args['pre'] then
textPre = args['pre']
end
if args['post'] then
textPost = args['post']
end
if a3 then
ns = a1
page = a2
text = a3
textPost = 3
elseif a2 then
if contains(namespaces, a1) then
ns = a1
page = a2
text = a2
else
ns = findNamespace(a1)
page = a1
text = a2
end
textPost = 2
else
ns = findNamespace(a1)
page = a1
text = a1
textPost = 1
end
if contains(upperCaseNS, ns) or contains(upperCaseText, text) then
lc = false
end
if auc then
lc = false
end
if alc then
lc = true
end
text = textPre .. text .. textPost
if lc then
text = frame:preprocess( string.lower(text) )
end
if ns == '' then
return frame:preprocess( '[[' .. page .. '|' .. text .. ']]' )
else
return frame:preprocess( '[[:' .. ns .. ':' .. page .. '|' .. text .. ']]' )
end
end
function p.n ( frame )
local args = frame.args
local ns = args[1]
for _, namespace in ipairs(namespaces) do
if ns == namespace then
return 'true'
end
end
return ''
end
return p