Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Module:Link: Difference between revisions

From Teriock
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 size = tonumber(args.size) or 1
local text = args[1]
local weight = tostring((3 + size)^3) .. ' lb.'
local cleanText = stripItalics(text)
return weight
return frame:preprocess( cleanText )
end
end


function p.carryingCapacity ( frame )
function p.l ( frame )
local args = frame.args
local args = frame.args
local size = tonumber(args.size) or 1
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 carryingCapacity = tostring((60 + (20 * str))) .. ' lb.'
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 carryingCapacity
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