Module:Large category TOC/sandbox: Difference between revisions

Content deleted Content added
No edit summary
space before concatenated string, not after
 
(46 intermediate revisions by 6 users not shown)
Line 1:
local p = {}
 
local azupper = mw.text.split('ABCDEFGHIJKLMNOPQRSTUVWXYZ','')
local azlower = mw.text.split('abcdefghijklmnopqrstuvwxyz','')
local aejot = mw.text.split('aejot','')
 
local function p.main(toc_type)
-- 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('plainlinkslarge-cat-toc')
:addClass('hlistplainlinks')
:attraddClass('id', 'toc')
-- :cssattr('backgroundid', 'WhiteSmoketoc')
:css('clear', 'both')
-- Contains "Content: Top 0-9 A - Z"
:css('width', '98%')
local header = mw.html.createtoc_frame:tag('div')
 
:attr('idclass', 'toctitle')
local header = mw.html.create('div')
:attr('id', 'toctitle')
-- Contains all the rest
 
local body_wrapper
local body = mw.html.create('div')
local body = toc_frame:tag('div')
:css('text-align', 'center')
body:addClass('NavContentlarge-cat-toc-body')
local bodyjumpy_collapse = mw.html.create('div')
:addClass('large-cat-toc-jumpy-title')
if toc_type == 'collapsible' then
toc_frame:addClass('NavFramemw-collapsible mw-collapsed')
headerbody:addClass('NavHeadermw-collapsible-content')
body:addClass('NavContent')
:css('background','white')
:css('display','none')
elseif toc_type == 'scrollable' then
bodytoc_frame:cssaddClass('overflowlarge-cat-toc-x','scroll')
:css('overflow-y','hidden')
end
local pageurl = mw.title.getCurrentTitle():fullUrl()
local header_content = '<strong>'..toc..':</strong>' ..{
' ['..pageurl..' Top]' ..
string.format(
' ['..pageurl..'?from=0 0&endash;9]'
'<span class="large-cat-toc-title">%s:</span> [%s Top] [%s?from=0 0–9]',
local toc = mw.message.new('Toc'):plain(),
pageurl,
pageurl
)
}
for i=1_,26,1 v in ipairs(azupper) do
table.insert(header_content, string.format(
local letter = string.sub(azupper,i,i)
' [%s?from=%s %s]', pageurl, v, v
header_content = header_content..' ['..pageurl..'?from='..letter..' '..letter..']'
))
end
header:wikitext(header_content)
local body_content
if toc_type == 'collapsible' then
jumpy_collapse:wikitext(table.concat(header_content))
body_content = '<b>#</b> '
header:node(bodyjumpy_collapse)
else
header:wikitext(table.concat(header_content))
body_content = '['..pageurl..'?from=* <b>*</b>] <b>#</b> '
end
local body_content = {}
for i=0,9,1 do
if toc_type ~= 'collapsible' then
body_content = body_content..' ['..pageurl..'?from='..i..' '..i..']'
table.insert(body_content, ' <span class="large-cat-toc-anum">['..pageurl..'?from=* *]</span>')
end
table.insert(body_content, ' <span class="large-cat-toc-anum">#</span>')
for i=1,26,1 do
body_wrapper = body:tag('span')
local letter = string.sub(azupper,i,i)
body_content = body_content..atoz(letter)
for i=0,9,1 do
table.insert(body_content,string.format(' [%s?from=%s %s]',pageurl,i,i))
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
table.insert(azlist = ,'\n• <bspan class="large-cat-toc-anum">'..letter..'</bspan> ')
else
table.insert(azlist = ,'\n <br /><bspan class="large-cat-toc-anum">'..letter..'</bspan> ')
end
for i=1_,maxind,1 v in ipairs(letterlist) do
local lowerletter =table.insert(azlist, string.subformat(letterlist,i,i)
azlist = azlist.. ' ['..pageurl..'%s?from=%s%s %s%s]'.., pageurl, letter..lowerletter..', v, '..letter..lowerletter..'], 'v
))
end
return table.concat(azlist)
end
for _, v in ipairs(azupper) do
body:wikitext(body_content)
table.insert(body_content, atoz(v))
header:node(body)
end
toc_frame:node(header)
bodybody_wrapper:wikitext(table.concat(body_content))
return tostring(toc_frame)
return '__NOTOC__\n' .. mw.getCurrentFrame():extensionTag{
name = 'templatestyles', args = { src = 'Module:Large category TOC/styles.css' }
return} .. tostring(toc_frame)
end
 
function p.scrollable(frame)
return main('scrollable')
end
 
function p.collapsible(frame)
return main('collapsible')
end
 
function p.aejot(frame)
return main('aejot')
end