词条 | Module:Sandbox/pppery/sentence list hatnote |
释义 | -- Sentence list ---- ---- This module does the core work of creating a hatnote that ends with ---- a list of pages . Many hatnote template use this format, and the module ---- heavily customizible for this purpose -- local mHatnote = require('Module:Hatnote') local mHatlist = require('Module:Hatnote list/sandbox') local yesno = require('Module:Yesno') local mArguments --initialize lazily local p = {} -- Defaults global to this modulelocal defaults = { prefix = , format = '%s %s.', template = 'Module:Sentence list hatnote', conjunction = 'and' } -- Produces a pages-list hatnote.-- The main frame (template definition) takes 1 or 2 arguments, for a singular-- and (optionally) plural label, as well as a few named arguments to specify various options-- * {{#invoke:Sentence list hatnote|list|Singular label|Plural label|allowText=yes/no|conjunction=and/or}}-- The resulting template takes pagename parameters normally.function p.list (frame) mArguments = require('Module:Arguments') local labels = {frame.args[1] or defaults.prefix} labels[2] = frame.args[2] or labels[1] local template = frame:getParent():getTitle() local args = mArguments.getArgs(frame, {parentOnly = true, removeBlanks = false}) local start = tonumber(frame.args.start) or 0 local options = { extraclasses = frame.args.extraclasses, category = args.category, selfref = frame.args.selfref or args.selfref, template = template, conjunction = frame.args.conjunction, default_page = frame.args.default_page } if yesno(frame.args.allowText) then options.text = args.text end local pages = {} for k, v in pairs(args) do if type(k) == 'number' and k >= start and #v > 0 then pages[#pages + 1] = v end end return p._list(pages, labels, options) end function p._list (pages, labels, options) labels = labels or {} if not options.text and #pages == 0 then if options.default_page then pages[#pages+1] = mHatnote.disambiguate(options.default_page) else return mHatnote.makeWikitextError( 'no page names specified', (options.template or defaults.template) .. '#Errors', options.category ) end end label = (#pages == 1 and labels[1] or labels[2]) or defaults.label local text = string.format( options.format or defaults.format, label, options.text or mHatlist.conjList(options.conjunction or defaults.conjunction, pages, true) ) local hnOptions = { extraclasses = options.extraclasses, selfref = options.selfref } return mHatnote._hatnote(text, hnOptions) end return p |
随便看 |
|
开放百科全书收录14589846条英语、德语、日语等多语种百科知识,基本涵盖了大多数领域的百科知识,是一部内容自由、开放的电子版国际百科全书。