More actions
Content deleted Content added
// via Wikitext Extension for VSCode Tag: Reverted |
// via Wikitext Extension for VSCode Tag: Manual revert |
||
Line 1: | Line 1: | ||
local p = {} |
local p = {} |
||
local namespaces = { |
|||
function p.weight ( frame ) |
|||
'', |
|||
'Core', |
|||
'Keyword', |
|||
'Category', |
|||
'Condition', |
|||
'Damage', |
|||
'Drain', |
|||
'Property', |
|||
'Ability', |
|||
'Tradecraft', |
|||
} |
|||
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', |
|||
'UB', |
|||
'AP', |
|||
'AV0', |
|||
'AV', |
|||
'BV', |
|||
'AC', |
|||
'DC', |
|||
'ES', |
|||
'Elder Sorcery', |
|||
'OP', |
|||
'Death Bag', |
|||
'BR', |
|||
} |
|||
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 stripItalics ( text ) |
|||
return text:gsub("''", '') |
|||
end |
|||
function p.i ( frame ) |
|||
local args = frame.args |
local args = frame.args |
||
local |
local text = args[1] |
||
local |
local cleanText = stripItalics(text) |
||
return |
return frame:preprocess( cleanText ) |
||
end |
end |
||
function p. |
function p.l ( frame ) |
||
local args = frame.args |
local args = frame.args |
||
local |
local title = args[1] |
||
for _, namespace in ipairs(namespaces) do |
|||
local str = tonumber(args.str) or 0 |
|||
local fullTitle = namespace == '' and title or (namespace .. ':' .. title) |
|||
if size < 5 then |
|||
local |
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 == '0' then |
|||
a1 = nil |
|||
end |
|||
if a2 == '0' then |
|||
a2 = nil |
|||
end |
|||
if a3 == '0' then |
|||
a3 = nil |
|||
end |
|||
local alc = args['lc'] |
|||
local auc = args['uc'] |
|||
if alc == '0' then |
|||
alc = nil |
|||
end |
|||
if auc == '0' 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 = stripItalics(a2) |
|||
text = a3 |
|||
elseif a2 then |
|||
if contains(namespaces, a1) then |
|||
ns = a1 |
|||
page = stripItalics(a2) |
|||
text = a2 |
|||
else |
|||
ns = findNamespace(stripItalics(a1)) |
|||
page = stripItalics(a1) |
|||
text = a2 |
|||
end |
|||
else |
else |
||
ns = findNamespace(stripItalics(a1)) |
|||
local carryingCapacity = tostring((60 + (20 * (str + (size - 5)))) ^ 2) .. ' lb.' |
|||
page = stripItalics(a1) |
|||
text = a1 |
|||
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 |
end |
||
return |
return '' |
||
end |
end |
||
Revision as of 00:05, 11 February 2025
Documentation for this module may be created at Module:Link/doc
local p = {}
local namespaces = {
'',
'Core',
'Keyword',
'Category',
'Condition',
'Damage',
'Drain',
'Property',
'Ability',
'Tradecraft',
}
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',
'UB',
'AP',
'AV0',
'AV',
'BV',
'AC',
'DC',
'ES',
'Elder Sorcery',
'OP',
'Death Bag',
'BR',
}
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 stripItalics ( text )
return text:gsub("''", '')
end
function p.i ( frame )
local args = frame.args
local text = args[1]
local cleanText = stripItalics(text)
return frame:preprocess( cleanText )
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 == '0' then
a1 = nil
end
if a2 == '0' then
a2 = nil
end
if a3 == '0' then
a3 = nil
end
local alc = args['lc']
local auc = args['uc']
if alc == '0' then
alc = nil
end
if auc == '0' 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 = stripItalics(a2)
text = a3
elseif a2 then
if contains(namespaces, a1) then
ns = a1
page = stripItalics(a2)
text = a2
else
ns = findNamespace(stripItalics(a1))
page = stripItalics(a1)
text = a2
end
else
ns = findNamespace(stripItalics(a1))
page = stripItalics(a1)
text = a1
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