မော်ဂျူး:Large category TOC
ပုံပန်းသွင်ပြင်
မော်ဂျူးမှတ်တမ်းလက်စွဲ[ဖန်တီး]
သင့်အနေဖြင့် ဤ Scribunto module အတွက် အသုံးပြုလက်စွဲ စာမျက်နှာကို ဖန်တီး နိုင်ပါသည်။ တည်းဖြတ်သူများအနေဖြင့် ဤမော်ဂျူး၏ sandbox (ဖန်တီး | ပုံတူပွား) နှင့် testcases (ဖန်တီး) စာမျက်နှာများကို စမ်းသပ်နိုင်ပါသည်။ စာမျက်နှာခွဲ /doc တွင် ကဏ္ဍများထည့်သွင်းပါ။ ဤ မော်ဂျူး ၏ စာမျက်နှာခွဲများ။. |
local p = {}
local BurmeseLetters = 'ကခဂဃငစဆဇဈဉညဋဌဍဎဏတထဒဓနပဖဗဘမယရလဝသဟဠအ'
local BurmeseNumbers = '၀၁၂၃၄၅၆၇၈၉'
local Burmese_aejot = 'ကစတပရ'
local azupper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
local azlower = 'abcdefghijklmnopqrstuvwxyz'
local aejot = 'aejot'
function p.scrollable(frame)
return main('scrollable')
end
function p.collapsible(frame)
return main('collapsible')
end
function p.aejot(frame)
return main('aejot')
end
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()
-- Highest level div
local toc_frame = mw.html.create('div')
:addClass('plainlinks')
:addClass('hlist')
:addClass('toc')
-- :attr('id','toc')
:css('display','block !important')
:css('background','WhiteSmoke')
:css('clear','both')
:css('width','98%')
-- Contains "Content: Top 0-9 A - Z"
local header = mw.html.create('div')
:attr('id','toctitle')
:attr('class','toctitle')
:css('background','WhiteSmoke')
-- Contains all the rest
local body_wrapper
local body = mw.html.create('div')
:css('text-align', 'center')
if toc_type == 'collapsible' then
toc_frame:addClass('NavFrame')
header:addClass('NavHead')
body:addClass('NavContent')
:css('background','white')
:css('display','none')
elseif toc_type == 'scrollable' then
body:css('overflow-x','scroll')
:css('overflow-y','hidden')
:css('white-space','nowrap')
end
local header_content = '<strong>'..toc..':</strong>' ..
' ['..pageurl..' ထိပ်ဆုံး]' ..
' ['..pageurl..'?from=۰ 0-9]'
for i=1,30 do
local letter = mw.ustring.sub(BurmeseLetters,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> '
body_wrapper = mw.html.create('code')
:css('background','White')
else
body_content = '['..pageurl..'?from=* <b>*</b>] <b>#</b> '
body_wrapper = mw.html.create('span')
end
local function Burmese_atoz(letter)
local azlist
local letterlist
local maxind
if toc_type == 'aejot' then
letterlist = Burmese_aejot
maxind = 5
else
letterlist = BurmeseLetters
maxind = 30
end
if toc_type == 'aejot' or toc_type == 'scrollable' then
azlist = ' • <b>'..letter..'</b> '
else
azlist = '<br /><b>'..letter..'</b> '
end
for i=1,maxind do
local lowerletter = mw.ustring.sub(letterlist,i,i)
azlist = azlist..' ['..pageurl..'?from='..letter..lowerletter..' '..letter..lowerletter..'] '
end
return azlist
end
for i=1,10 do
local letter = mw.ustring.sub(BurmeseNumbers,i,i)
body_content = body_content..' ['..pageurl..'?from='..letter..' '..letter..']'
end
for i=1,30 do
local letter = mw.ustring.sub(BurmeseLetters,i,i)
body_content = body_content..Burmese_atoz(letter)
end
body_content = body_content .. '<br />'
body_content = body_content .. '<br />'
for i=1,26 do
local letter = string.sub(azupper,i,i)
body_content = body_content..' ['..pageurl..'?from='..letter..' '..letter..']'
end
body_content = body_content .. '<br />'
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 = ' • <b>'..letter..'</b> '
else
azlist = '<br /><b>'..letter..'</b> '
end
for i=1,maxind do
local lowerletter = string.sub(letterlist,i,i)
azlist = azlist..' ['..pageurl..'?from='..letter..lowerletter..' '..letter..lowerletter..'] '
end
return azlist
end
for i=0,9 do
body_content = body_content..' ['..pageurl..'?from='..i..' '..i..']'
end
for i=1,26 do
local letter = string.sub(azupper,i,i)
body_content = body_content..atoz(letter)
end
body_wrapper:wikitext(body_content)
body:node(body_wrapper)
toc_frame:node(header)
toc_frame:node(body)
return '__NOTOC__\n'..tostring(toc_frame)
end
return p