Module:Large category TOC/sandbox: Difference between revisions

Content deleted Content added
No edit summary
space before concatenated string, not after
 
(53 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 main(toc_type)
-- Implements [[Template:Large Category TOC]]
local toc_frame = mw.html.create('div')
function p.scrollable(frame)
:addClass('large-cat-toc')
-- It should be much faster to only process these once, and just re use them as variables
:addClass('plainlinks')
local pageurl = mw.title.getCurrentTitle():fullUrl()
:addClass('toc')
local toc = mw.message.new('Toc'):plain()
-- :attr('id','toc')
-- Contains "Content: Top 0-9 A - Z"
local header = toc_frame:tag('div')
:attr('class', 'toctitle')
-- 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 title = '<div style="width:100%;">\n<span class="plainlinks">'..toc..':\n['..pageurl..' Top]'..
local body = toc_frame:tag('div')
'\n['..pageurl..'?from=0 0-9]'
:addClass('large-cat-toc-body')
-- Add ?from=A through Z to the title bar
for i=1,26,1 do
local letterjumpy_collapse = stringmw.subhtml.create(azupper,i,i'div')
:addClass('large-cat-toc-jumpy-title')
title = title..'\n['..pageurl..'?from='..letter..' '..letter..']'
if toc_type == 'collapsible' then
toc_frame:addClass('mw-collapsible mw-collapsed')
body:addClass('mw-collapsible-content')
elseif toc_type == 'scrollable' then
toc_frame:addClass('large-cat-toc-scroll')
end
-- Closing tags
title = title..'\n</span>\n</div>'
-- Begin the list parameter with ?from=*
local list = '<div style="overflow-x:auto; overflow-y:hidden; width:98%;"><span class="plainlinks">'..
'\n['..pageurl..'?from=* *] •'
 
-- Add ?from=0 through 9 to the list
for i=0,9,1 do
list = list..'\n['..pageurl..'?from='..i..' '..i..']'
end
-- A-Z loop that calls the a-z function
for i=1,26,1 do
local letter = string.sub(azupper,i,i)
list = list..atoz(letter,true,true,pageurl)
end
-- Close tags
list = list..'\n</span></div>'
return frame:expandTemplate{title='Navigation bar',args={color='#f9f9f9;',title=title,list=list}}
end
 
-- Implements [[Template:Collapsible large category TOC]]
function p.collapsible(frame)
-- It should be much faster to only process these once, and just re use them as variables
local pageurl = mw.title.getCurrentTitle():fullUrl()
local header_content = {
string.format(
'<span class="large-cat-toc-title">%s:</span> [%s Top] [%s?from=0 0–9]',
mw.message.new('Toc'):plain(),
pageurl,
pageurl
)
}
for _, v in ipairs(azupper) do
local toc_string = '<div class="collapsible" style="background:transparent;">\n'..
table.insert(header_content, string.format(
'<div class="NavFrame" style="clear:both; background:WhiteSmoke;">\n'..
' [%s?from=%s %s]', pageurl, v, v
'<div class="NavHead" style="background:WhiteSmoke;">\n'..
))
'<div class="plainlinks" id="kat_toc" style="background:WhiteSmoke; text-align:center; font-size:100%;">\n'..
'<b>Index:</b> ['..pageurl..' *] ['..pageurl..'?from=# 0-9]'
-- Add ?from=A through Z to the title bar
for i=1,26,1 do
local letter = string.sub(azupper,i,i)
toc_string = toc_string..' ['..pageurl..'?from='..letter..' '..letter..']'
end
-- Closing tags
if toc_type == 'collapsible' then
toc_string = toc_string..'<span style="font-size: 85%;">(Click <i>Show</i> for more navigation options.)</span>'..
jumpy_collapse:wikitext(table.concat(header_content))
'\n</div>\n</div>'..
header:node(jumpy_collapse)
'<div class="NavContent" style="background:White; display:none;">'..
else
'<div class="plainlinks" style="background:White; font-size:100%; text-align:center;">'..
header:wikitext(table.concat(header_content))
'\n----'..
'\n<code style="background:White;"> <b>#</b>'
-- Add ?from=0 through 9 to the list
for i=0,9,1 do
toc_string = toc_string..'\n['..pageurl..'?from='..i..' '..i..']'
end
local body_content = {}
toc_string = toc_string..'<br/>'
if toc_type ~= 'collapsible' then
 
table.insert(body_content, ' <span class="large-cat-toc-anum">['..pageurl..'?from=* *]</span>')
-- A-Z loop that calls the a-z function
for i=1,26,1 do
local letter = string.sub(azupper,i,i)
toc_string = toc_string..atoz(letter,true,true,pageurl)
end
-- Close tags
toc_string = toc_string..'\n</code>\n</div></div></div>'
table.insert(body_content, ' <span class="large-cat-toc-anum">#</span>')
return toc_string
body_wrapper = body:tag('span')
end
 
for i=0,9 do
function atoz(letter,bullets,fullaz,url)
table.insert(body_content,string.format(' [%s?from=%s %s]',pageurl,i,i))
local azlist
local letterlist
local maxind
if fullaz then
letterlist = azlower
maxind = 26
else
letterlist = aejot
maxind = 5
end
local function atoz(letter)
if bullets then
local azlist = '\n• <b>'..letter..'</b> '{}
local letterlist
else
if toc_type == 'aejot' then
azlist = '<br>\n<b>'..letter..'</b> '
letterlist = aejot
else
letterlist = azlower
end
if toc_type == 'aejot' or toc_type == 'scrollable' then
table.insert(azlist,' • <span class="large-cat-toc-anum">'..letter..'</span>')
else
table.insert(azlist,' <br /><span class="large-cat-toc-anum">'..letter..'</span>')
end
for _, v in ipairs(letterlist) do
table.insert(azlist, string.format(
' [%s?from=%s%s %s%s]', pageurl, letter, v, letter, v
))
end
return table.concat(azlist)
end
for i=1_,maxind,1 v in ipairs(azupper) do
table.insert(body_content, atoz(v))
local lowerletter = string.sub(letterlist,i,i)
azlist = azlist..' ['..url..'?from='..letter..lowerletter..' '..letter..lowerletter..'] '
end
return azlist
end
body_wrapper:wikitext(table.concat(body_content))
return '__NOTOC__\n' .. mw.getCurrentFrame():extensionTag{
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
 
return p