From Wikipedia, the free encyclopedia

local p = {}



function p.exists(pagename)

    return mw.title.new(pagename, "Template").exists

end



function p.pcase(word)

   return mw.ustring.upper(mw.ustring.sub(word,1,1)) .. mw.ustring.sub(word,2)

end



function p._subtree(pagename)

    -- split items on dash into table

    local r = 0

    local t = {}

    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)



    local out = {"",pagename}

    local temppage

    local temppageexists

    local removeditem1 = ""

    local removeditem2 = ""

    while (#t > 1) do

        if r == 1 then

            r = 0

        else

            -- Remove 1st item from list

            removeditem1 = t1

            table.remove(t, 1)

        end



        temppage = table.concat(t, "-") .. "-stub"

        temppageexists = p.exists(temppage)

        if temppageexists == true then

            table.insert(out,"[[Template:" .. temppage .. "|" .. p.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 = p.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 .. "|" .. p.pcase(temppage) .. "]]")

            else

                -- if exists then add last item back to list

                table.insert(t,removeditem2)

            end

        end

    end

    

    local list = mw.html.create('ul')

    for _, item in ipairs(out) do

    	list:tag('li'):wikitext(item):done()

    end

    list:tag('li'):wikitext('[[Template:Stub|Stub]]'):allDone()

	

    local finalresult = mw.html.create('div')

    finalresult:cssText('float:right; border-style:dotted; border-width:2px; padding:5px; margin:5px;')

    	:tag('span')

    		:attr('title', 'This shows the hierarchy of the stub template in relation to other templates.')

    		:cssText('font-size:125%; font-weight:bold;')

    		:wikitext('Stub hierarchy')

    		:done()

    	:addNode(list)

    	:done()

    	

    return tostring(finalresult)

end



function p.subtree(frame)

    return p._subtree(frame.args"pagename"])

end



return p
From Wikipedia, the free encyclopedia

local p = {}



function p.exists(pagename)

    return mw.title.new(pagename, "Template").exists

end



function p.pcase(word)

   return mw.ustring.upper(mw.ustring.sub(word,1,1)) .. mw.ustring.sub(word,2)

end



function p._subtree(pagename)

    -- split items on dash into table

    local r = 0

    local t = {}

    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)



    local out = {"",pagename}

    local temppage

    local temppageexists

    local removeditem1 = ""

    local removeditem2 = ""

    while (#t > 1) do

        if r == 1 then

            r = 0

        else

            -- Remove 1st item from list

            removeditem1 = t1

            table.remove(t, 1)

        end



        temppage = table.concat(t, "-") .. "-stub"

        temppageexists = p.exists(temppage)

        if temppageexists == true then

            table.insert(out,"[[Template:" .. temppage .. "|" .. p.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 = p.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 .. "|" .. p.pcase(temppage) .. "]]")

            else

                -- if exists then add last item back to list

                table.insert(t,removeditem2)

            end

        end

    end

    

    local list = mw.html.create('ul')

    for _, item in ipairs(out) do

    	list:tag('li'):wikitext(item):done()

    end

    list:tag('li'):wikitext('[[Template:Stub|Stub]]'):allDone()

	

    local finalresult = mw.html.create('div')

    finalresult:cssText('float:right; border-style:dotted; border-width:2px; padding:5px; margin:5px;')

    	:tag('span')

    		:attr('title', 'This shows the hierarchy of the stub template in relation to other templates.')

    		:cssText('font-size:125%; font-weight:bold;')

    		:wikitext('Stub hierarchy')

    		:done()

    	:addNode(list)

    	:done()

    	

    return tostring(finalresult)

end



function p.subtree(frame)

    return p._subtree(frame.args"pagename"])

end



return p

Videos

Youtube | Vimeo | Bing

Websites

Google | Yahoo | Bing

Encyclopedia

Google | Yahoo | Bing

Facebook