Module:Asbox stubtree: Difference between revisions

From Zoophilia Wiki
Jump to navigationJump to search
meta>WOSlinker
No edit summary
Ookami (talk | contribs)
m 14 revisions imported
 
(9 intermediate revisions by one other user not shown)
Line 2: Line 2:


function i.exists(pagename)
function i.exists(pagename)
     return 1
    local t = mw.title.new(pagename, "Template")
     return t.exists
end
 
function i.pcase(word)
  return mw.ustring.upper(mw.ustring.sub(word,1,1)) .. mw.ustring.sub(word,2)
end
end


function i._subtree(pagename)
function i._subtree(pagename)
    local finalresult
     local out = {"",pagename}
     local out = {"",pagename}
     local tt
     local tt
Line 12: Line 18:
     local r = 0
     local r = 0
     local t = {}
     local t = {}
    local removeditem1 = ""
    local removeditem2 = ""
      
      
     -- split items on dash into table
     -- split items on dash into table
Line 18: Line 26:
         if tonumber(mw.ustring.sub(token,1,1)) == nil then
         if tonumber(mw.ustring.sub(token,1,1)) == nil then
             table.insert(t,token)
             table.insert(t,token)
        else
             r = 1
             r = 1
         end
         end
Line 27: Line 36:
             r = 0
             r = 0
         else
         else
            -- Remove 1st item from list
            removeditem1 = t[1]
             table.remove(t, 1)
             table.remove(t, 1)
             temppage = table.concat(t, "-") .. "-stub"
        end
 
        temppage = table.concat(t, "-") .. "-stub"
        temppageexists = i.exists(temppage)
        if temppageexists == true then
            table.insert(out,"[[Template:" .. temppage .. "|" .. i.pcase(temppage) .. "]]")
        else
            -- If template with first item does not exist, try removing last item
            removeditem2 = t[#t]
            table.remove(t, #t)
             temppage = removeditem1 .. "-" .. table.concat(t, "-") .. "-stub"
            if #t == 0 then
                temppage = removeditem1 .. "-stub"
            end
             temppageexists = i.exists(temppage)
             temppageexists = i.exists(temppage)
             if temppageexists == 0 then
             if temppageexists == true then
                 --TODO
                 -- if exists then add first item back to list
                table.insert(t,1,removeditem1)
                table.insert(out,"[[Template:" .. temppage .. "|" .. i.pcase(temppage) .. "]]")
            else
                -- if exists then add last item back to list
                table.insert(t,removeditem2)
             end
             end
         end
         end
        table.insert(out,temppage)
     end
     end


     return table.concat(out, "\n* ")
     finalresult = '<div style="float:right; border-style:dotted; border-width:2px; padding:5px; margin:5px;">'
    finalresult = finalresult .. '<span title="This shows the hierarchy of the stub template in relation to other templates." style="font-size:125%; font-weight:bold;">Stub hierarchy</span>'
    finalresult = finalresult .. table.concat(out, "\n* ")
    finalresult = finalresult .. '\n* [[Template:Stub|Stub]]'
    finalresult = finalresult .. '\n</div>'
    return finalresult
end
end



Latest revision as of 04:27, 3 September 2020

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

local i = {}

function i.exists(pagename)
    local t = mw.title.new(pagename, "Template")
    return t.exists
end

function i.pcase(word)
   return mw.ustring.upper(mw.ustring.sub(word,1,1)) .. mw.ustring.sub(word,2)
end

function i._subtree(pagename)
    local finalresult
    local out = {"",pagename}
    local tt
    local temppage
    local temppageexists
    local r = 0
    local t = {}
    local removeditem1 = ""
    local removeditem2 = ""
    
    -- split items on dash into table
    for token in mw.ustring.gmatch(pagename, "[^-]+") do
        -- don't add numbered items to list
        if tonumber(mw.ustring.sub(token,1,1)) == nil then
            table.insert(t,token)
        else
            r = 1
        end
    end
    table.remove(t, #t)

    while (#t > 1) do
        if r == 1 then
            r = 0
        else
            -- Remove 1st item from list
            removeditem1 = t[1]
            table.remove(t, 1)
        end

        temppage = table.concat(t, "-") .. "-stub"
        temppageexists = i.exists(temppage)
        if temppageexists == true then
            table.insert(out,"[[Template:" .. temppage .. "|" .. i.pcase(temppage) .. "]]")
        else
            -- If template with first item does not exist, try removing last item
            removeditem2 = t[#t]
            table.remove(t, #t)
            temppage = removeditem1 .. "-" .. table.concat(t, "-") .. "-stub"
            if #t == 0 then
                temppage = removeditem1 .. "-stub"
            end
            temppageexists = i.exists(temppage)
            if temppageexists == true then
                -- if exists then add first item back to list
                table.insert(t,1,removeditem1)
                table.insert(out,"[[Template:" .. temppage .. "|" .. i.pcase(temppage) .. "]]")
            else
                -- if exists then add last item back to list
                table.insert(t,removeditem2)
            end
        end
    end

    finalresult = '<div style="float:right; border-style:dotted; border-width:2px; padding:5px; margin:5px;">'
    finalresult = finalresult .. '<span title="This shows the hierarchy of the stub template in relation to other templates." style="font-size:125%; font-weight:bold;">Stub hierarchy</span>'
    finalresult = finalresult .. table.concat(out, "\n* ")
    finalresult = finalresult .. '\n* [[Template:Stub|Stub]]'
    finalresult = finalresult .. '\n</div>'
    return finalresult
end

function i.subtree(frame)
    return i._subtree(frame.args["pagename"])
end

return i