Jump to content

Module:ListSubpages: Difference between revisions

From Monster Girl Encyclopedia
imported>Xena
Made it more versatile. Last edit!
imported>Xena
Solved the special character issue
Line 9: Line 9:
     if page == '' then page = tostring(mw.title.getCurrentTitle()) end
     if page == '' then page = tostring(mw.title.getCurrentTitle()) end
     -- get parent page name
     -- get parent page name
     page = mw.text.split(page, '/', true)[1]
     page = frame:callParserFunction('TOPLEVELPAGE', {page})
     -- get subpages
     -- get subpages
local allSubpages = frame:callParserFunction('SUBPAGES', { page, sep = "|" })
local allSubpages = frame:callParserFunction('SUBPAGES', { page, sep = ",,,,,,,,,," })
allSubpages = mw.text.split(allSubpages, "|")
allSubpages = mw.text.split(allSubpages, ",,,,,,,,,,", true)
local result = {}
local result = {}
Line 25: Line 25:
     result[#result+1] = allSubpages[i]
     result[#result+1] = allSubpages[i]
     result[#result+1] = [==[|<span style="color:white;">]==]
     result[#result+1] = [==[|<span style="color:white;">]==]
result[#result+1] = string.sub( allSubpages[i], #page+2 )
result[#result+1] = frame:callParserFunction('SUBPAGENAME', {allSubpages[i]})
result[#result+1] = '</span>]]</div>'
result[#result+1] = '</span>]]</div>'
end end
end end

Revision as of 14:09, 4 September 2022

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

local p = {} --p stands for package



function p.list( frame )
	
    local page = frame.args[1] or frame.args['page'] or tostring(mw.title.getCurrentTitle())
    -- empty parameter check
    if page == '' then page = tostring(mw.title.getCurrentTitle()) end
    -- get parent page name
    page = frame:callParserFunction('TOPLEVELPAGE', {page})
    -- get subpages
	local allSubpages = frame:callParserFunction('SUBPAGES', { page, sep = ",,,,,,,,,," })
	allSubpages = mw.text.split(allSubpages, ",,,,,,,,,,", true)
	local result = {}
	
	-- add main page
	result[#result+1] = [==[<div style="display:inline-block; position: relative; background-color: #d97308; width: 80px; color:white; text-align: center; padding:5px; border-radius: 5px; margin-right: 5px; ">[[]==]
    result[#result+1] = page
    result[#result+1] = [==[|<span style="color:white;">Main</span>]]</div>]==]
	
	-- add subpages
	if #allSubpages[1] > 0 then for i = 1, #allSubpages do
		result[#result+1] = [==[<div style="display:inline-block; position: relative; background-color: #d97308; width: 80px; color:white; text-align: center; padding:5px; border-radius: 5px; margin-right: 5px; ">[[]==]
    	result[#result+1] = allSubpages[i]
    	result[#result+1] = [==[|<span style="color:white;">]==]
		result[#result+1] = frame:callParserFunction('SUBPAGENAME', {allSubpages[i]})
		result[#result+1] = '</span>]]</div>'
	end end

   return table.concat(result)
   
    

end


return p