Difference between revisions of "Module:Large category TOC/sandbox"
Jump to navigation
Jump to search
blackwiki>The Mol Man (i need to start from scratch later anyways...) |
blackwiki>The Mol Man |
||
| Line 6: | Line 6: | ||
-- Implements [[Template:Large Category TOC]] | -- Implements [[Template:Large Category TOC]] | ||
| − | function p. | + | function p.main(toc_type) |
-- It should be much faster to only process these once, and just re use them as variables | -- It should be much faster to only process these once, and just re use them as variables | ||
local pageurl = mw.title.getCurrentTitle():fullUrl() | local pageurl = mw.title.getCurrentTitle():fullUrl() | ||
| Line 12: | Line 12: | ||
-- Begins the "title" parameter of {{Navigation bar}} with Top of the category (no ?from) and numerals (?from=0) | -- Begins the "title" parameter of {{Navigation bar}} with Top of the category (no ?from) and numerals (?from=0) | ||
| − | local | + | local toc_frame = mw.html.create('div') |
| − | + | :addClass('plainlinks') | |
| − | + | :addClass('hlist') | |
| − | + | :attr('id', 'toc') | |
| − | + | :css('background', 'WhiteSmoke') | |
| − | + | :css('clear', 'both') | |
| − | + | :css('width', '98%') | |
| − | + | ||
| − | + | local header = mw.html.create('div') | |
| − | + | :attr('id', 'toctitle') | |
| − | |||
| − | |||
| − | - | + | local body = mw.html.create('div') |
| − | + | :css('text-align', 'center') | |
| − | + | ||
| + | if toc_type == 'collapsible' then | ||
| + | toc_frame:addClass('NavFrame') | ||
| + | header:addClass('NavHeader') | ||
| + | body:addClass('NavContent') | ||
| + | :css('background','white') | ||
| + | :css('display','none') | ||
| + | elseif toc_type == 'scrollable' then | ||
| + | body:css('overflow-x','scroll') | ||
| + | :css('overflow-y','hidden') | ||
end | end | ||
| − | + | ||
| + | local header_content = '<strong>'..toc..':</strong>' .. | ||
| + | ' ['..pageurl..' Top]' .. | ||
| + | ' ['..pageurl..'?from=0 0&endash;9]' | ||
| + | |||
for i=1,26,1 do | for i=1,26,1 do | ||
local letter = string.sub(azupper,i,i) | local letter = string.sub(azupper,i,i) | ||
| − | + | header_content = header_content..' ['..pageurl..'?from='..letter..' '..letter..']' | |
end | end | ||
| − | |||
| − | |||
| − | + | header:wikitext(header_content) | |
| − | + | ||
| − | + | local body_content | |
| − | |||
| − | |||
| − | |||
| − | local | ||
| − | + | if toc_type == 'collapsible' then | |
| − | + | body_content = '<b>#</b> ' | |
| − | + | else | |
| − | + | body_content = '['..pageurl..'?from=* <b>*</b>] <b>#</b> ' | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
end | end | ||
| − | + | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
for i=0,9,1 do | for i=0,9,1 do | ||
| − | + | body_content = body_content..' ['..pageurl..'?from='..i..' '..i..']' | |
end | end | ||
| − | + | ||
| − | |||
for i=1,26,1 do | for i=1,26,1 do | ||
local letter = string.sub(azupper,i,i) | local letter = string.sub(azupper,i,i) | ||
| − | + | body_content = body_content..atoz(letter) | |
end | end | ||
| − | |||
| − | |||
| − | + | local function atoz(letter) | |
| − | + | local azlist | |
| − | + | local letterlist | |
| − | function atoz(letter | + | local maxind |
| − | + | if toc_type == 'aejot' then | |
| − | + | letterlist = aejot | |
| − | + | maxind = 5 | |
| − | + | else | |
| − | + | letterlist = azlower | |
| − | + | maxind = 26 | |
| − | + | end | |
| − | + | ||
| − | + | if toc_type == 'aejot' or toc_type == 'scrollable' then | |
| − | + | azlist = '\n• <b>'..letter..'</b> ' | |
| − | + | else | |
| − | + | azlist = '\n<br /><b>'..letter..'</b> ' | |
| − | + | end | |
| − | + | ||
| − | + | for i=1,maxind,1 do | |
| + | local lowerletter = string.sub(letterlist,i,i) | ||
| + | azlist = azlist..' ['..pageurl..'?from='..letter..lowerletter..' '..letter..lowerletter..'] ' | ||
| + | end | ||
| + | return azlist | ||
end | end | ||
| − | + | body:wikitext(body_content) | |
| − | + | header:node(body) | |
| − | + | toc_frame:node(header) | |
| − | + | ||
| − | return | + | return tostring(toc_frame) |
end | end | ||
return p | return p | ||
Revision as of 23:16, 6 July 2014
Documentation for this module may be created at Module:Large category TOC/sandbox/doc
local p = {}
local azupper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
local azlower = 'abcdefghijklmnopqrstuvwxyz'
local aejot = 'aejot'
-- Implements [[Template:Large Category TOC]]
function p.main(toc_type)
-- It should be much faster to only process these once, and just re use them as variables
local pageurl = mw.title.getCurrentTitle():fullUrl()
local toc = mw.message.new('Toc'):plain()
-- Begins the "title" parameter of {{Navigation bar}} with Top of the category (no ?from) and numerals (?from=0)
local toc_frame = mw.html.create('div')
:addClass('plainlinks')
:addClass('hlist')
:attr('id', 'toc')
:css('background', 'WhiteSmoke')
:css('clear', 'both')
:css('width', '98%')
local header = mw.html.create('div')
:attr('id', 'toctitle')
local body = mw.html.create('div')
:css('text-align', 'center')
if toc_type == 'collapsible' then
toc_frame:addClass('NavFrame')
header:addClass('NavHeader')
body:addClass('NavContent')
:css('background','white')
:css('display','none')
elseif toc_type == 'scrollable' then
body:css('overflow-x','scroll')
:css('overflow-y','hidden')
end
local header_content = '<strong>'..toc..':</strong>' ..
' ['..pageurl..' Top]' ..
' ['..pageurl..'?from=0 0&endash;9]'
for i=1,26,1 do
local letter = string.sub(azupper,i,i)
header_content = header_content..' ['..pageurl..'?from='..letter..' '..letter..']'
end
header:wikitext(header_content)
local body_content
if toc_type == 'collapsible' then
body_content = '<b>#</b> '
else
body_content = '['..pageurl..'?from=* <b>*</b>] <b>#</b> '
end
for i=0,9,1 do
body_content = body_content..' ['..pageurl..'?from='..i..' '..i..']'
end
for i=1,26,1 do
local letter = string.sub(azupper,i,i)
body_content = body_content..atoz(letter)
end
local function atoz(letter)
local azlist
local letterlist
local maxind
if toc_type == 'aejot' then
letterlist = aejot
maxind = 5
else
letterlist = azlower
maxind = 26
end
if toc_type == 'aejot' or toc_type == 'scrollable' then
azlist = '\n• <b>'..letter..'</b> '
else
azlist = '\n<br /><b>'..letter..'</b> '
end
for i=1,maxind,1 do
local lowerletter = string.sub(letterlist,i,i)
azlist = azlist..' ['..pageurl..'?from='..letter..lowerletter..' '..letter..lowerletter..'] '
end
return azlist
end
body:wikitext(body_content)
header:node(body)
toc_frame:node(header)
return tostring(toc_frame)
end
return p