Module:Large category TOC/sandbox: Difference between revisions

Content deleted Content added
No edit summary
space before concatenated string, not after
 
(40 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.scrollablemain(frametoc_type)
local toc_frame = mw.html.create('div')
return main('scrollable')
:addClass('large-cat-toc')
end
:addClass('plainlinks')
 
:addClass('toc')
function p.collapsible(frame)
-- :attr('id','toc')
return main('collapsible')
end
-- Contains "Content: Top 0-9 A - Z"
 
local header = toc_frame:tag('div')
function p.aejot(frame)
:attr('class', 'toctitle')
return main('aejot')
end
 
 
-- Implements [[Template:Large Category TOC]]
function 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()
-- Contains all the rest
-- Begins the "title" parameter of {{Navigation bar}} with Top of the category (no ?from) and numerals (?from=0)
local body_wrapper
local toc_frame = mw.html.create('div')
local body = toc_frame:tag('div')
:addClass('plainlinks')
:addClass('hlistlarge-cat-toc-body')
:attr('id', 'toc')
local jumpy_collapse = mw.html.create('div')
:css('background', 'WhiteSmoke')
:addClass('large-cat-toc-jumpy-title')
: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('NavFramemw-collapsible mw-collapsed')
headerbody:addClass('NavHeadmw-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>' ..
local header_content = {
' ['..pageurl..' Top]' ..
string.format(
' ['..pageurl..'?from=0 0–9]'
'<span class="large-cat-toc-title">%s:</span> [%s Top] [%s?from=0 0–9]',
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(jumpy_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>')
body_wrapper = body:tag('span')
for i=0,9 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 = ,' • <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 i=1_,26,1 v in ipairs(azupper) do
table.insert(body_content, atoz(v))
local letter = string.sub(azupper,i,i)
body_content = body_content..atoz(letter)
end
bodybody_wrapper:wikitext(table.concat(body_content))
header:node(body)
toc_frame:node(header)
return '__NOTOC__\n' .. mw.getCurrentFrame():extensionTag{
return tostring(toc_frame)
name = 'templatestyles', args = { src = 'Module:Large category TOC/styles.css' }
} .. 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