Module:WikiLink

From Lo-BBA
Jump to navigation Jump to search

Documentation for this module may be created at Module:WikiLink/doc

require('Module:StrSplit')

local p = {}

function p.wikilink(strArg)
    local str = mw.getCurrentFrame().args[1]

    --local str = "eternity,, sword series [wikiterm]{custom link}"
    --local str = "Hy&shy;per­di&#8203;mensio&shy;n Nept&shy;unia <bla>asf</blaa>"

    --if (strArg ~= nil) then
    --    str = strArg
    --end
                       
    mw.logObject(str)
    str = str:gsub(",,", "&#44;")
             :gsub("\\,", "&#44;")
    local table = strSplit(str,",\n")
    mw.logObject(table)

    local res = ""
    for i,ind in ipairs(table) do
        local customLink = ind:match("%{.*%}")
        local wikiTerm = ind:match("%[.*%]")
        local indSub = ind:gsub("&#8203;", "")
                          :gsub("&shy;", "")
                          :gsub("&#8288;", "")
                          :gsub("­","")
                          :gsub(" -<.-> -","")
                          :gsub(" -</.-> -","")
                          :gsub(" -%(.*%) -","")
        local wikiString = "[[wikipedia:".. indSub .."|<span style='color:#000'>".. ind .."</span>]]"
        if (wikiTerm ~= nil) then
            mw.logObject("wikiterm: " .. wikiTerm)
            --indTemp = wikiTerm:gsub("[%[%]]","")
            --ind = ind:gsub(" ?%[.*%] ?","")
            wikiString = "[[wikipedia:".. wikiTerm:gsub("[%[%]]","") .."|<span style='color:#000'>".. ind:gsub(" ?%[.*%] ?","") .."</span>]]"
        elseif (customLink ~= nil) then
            mw.logObject("customLink: " .. customLink)
            ind = ind:gsub(" ?%{.*%} ?",""):gsub(" ?%[.*%] ?","")
            wikiString = "<span class='plainlinks'>[".. customLink:gsub("[%{%}]","") .." <span style='color:#000'>".. ind:gsub("[%[%]]","") .."</span>]</span>"
        end
        mw.logObject("wikistring: "..wikiString)
        if (i > 1) then
            res = res .. ", "
        end
        res = res .. wikiString
    end
    mw.logObject("res: "..res)
    return res
end

return p