模块:Element/heading
此模块的文档可以在模块:Element/heading/doc创建
local p = {} function handle(frame, type) local args = frame:getParent().args local title local database local defaultPageStyle local templateArgs = {} local noteTAArgs = {} if (args.overridingIndexingTitleLink) then title = args.overridingIndexingTitleLink else title = string.gsub(mw.title.getCurrentTitle().rootText, ' ', '_') end local currentNamespace = (mw.title.getCurrentTitle().nsText):lower() if (args.overridingDatabaseName) then database = args.overridingDatabaseName elseif (currentNamespace == 'moment') then database = currentNamespace defaultPageStyle = 'bluetint' templateArgs.titleAlignsLeft = true elseif (currentNamespace == 'column' or currentNamespace == 'literature') then database = currentNamespace defaultPageStyle = 'serif' end local dataJSON = frame:callParserFunction{name = '#getdata', args = {database, 'queryString=link includes ' .. title:lower()}} if (dataJSON ~= '' and dataJSON ~= '[]') then local templateRawArgs = mw.text.jsonDecode(dataJSON, mw.text.JSON_PRESERVE_KEYS)[0] for key, value in pairs(templateRawArgs) do if (string.find(key, 'display', 1, 1) == 1) then -- 'displayTitle' to 'title' templateArgs[string.sub(key, 8, 8):lower() .. string.sub(key, 9)] = value elseif (key == 'link') then elseif (templateArgs[key] == nil) then templateArgs[key] = value end end end if (type =='header') then templateArgs.chapters = nil for key, value in pairs(args) do if (string.find(key, 'c[G%d]') == 1) then noteTAArgs[string.sub(key, 2)] = value else templateArgs[key] = value end end if (templateArgs.pageStyle ~= nil) then templateArgs.pageStyle = defaultPageStyle .. ' ' .. templateArgs.pageStyle else templateArgs.pageStyle = defaultPageStyle end return frame:expandTemplate{title = 'NoteTA', args = noteTAArgs} .. frame:expandTemplate{title = 'Element/heading/frame', args = templateArgs} elseif (type == 'footer') then -- 'chapters': { -- '0': 'title0', -- '1': 'title1', -- '2': 'title2', -- } local result = ''; local chapters = templateArgs.chapters; local forcedNextPrevious = mw.text.trim(args.np or ''); if (chapters ~= nil and forcedNextPrevious ~= 'false') then local nextPrevArgs = {} local subname = tonumber(mw.title.getCurrentTitle().subpageText) if (chapters[subname + 2 - 1] ~= nil) then nextPrevArgs.nextTitle = chapters[subname + 2 - 1] end if (chapters[subname - 0 - 1] ~= nil) then nextPrevArgs.prevTitle = chapters[subname - 0 - 1] end result = frame:expandTemplate{title = 'Element/pageNextPrevious', args = nextPrevArgs} elseif (templateArgs.serial ~= nil and forcedNextPrevious ~= "false" or forcedNextPrevious == 'true') then result = frame:expandTemplate{title = 'Element/pageNextPrevious', args = {}} end local footerArgs = {} if (templateArgs.class ~= nil) then for i, v in ipairs(mw.text.split(templateArgs.class, ' ', true)) do footerArgs['cat' .. i] = v end end result = result .. frame:expandTemplate{title = 'Element/footer', args = footerArgs} return result end end function p.header(frame) return handle(frame, 'header') end function p.footer(frame) return handle(frame, 'footer') end return p