Module:Asbox stubtree: Difference between revisions
From Zoophilia Wiki
Jump to navigationJump to search
meta>WOSlinker No edit summary |
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 == | 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 | 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 | 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