Module:Labelled list hatnote

Fiji Hindi editions of Wiki, an online encyclopedia

Documentation for this module may be created at Module:Labelled list hatnote/doc

----------------------------------------------------------------------------------                               Labelled list                                ----                                                                            ---- This module does the core work of creating a hatnote composed of a list    ---- prefixed by a colon-terminated label, i.e. "LABEL: [andList of pages]",    ---- for {{see also}} and similar templates.                                    ----------------------------------------------------------------------------------local mHatnote = require('Module:Hatnote')local mHatlist = require('Module:Hatnote list')local mArguments --initialize lazilylocal p = {}-- Defaults global to this modulelocal defaults = {label = 'See also', --Final fallback for label argumentlabelForm = '%s: %s',prefixes = {'label', 'label ', 'l'},template = 'Module:Labelled list hatnote'}-- Helper function that pre-combines display parameters into page arguments.-- Also compresses sparse arrays, as a desirable side-effect.function p.preprocessDisplays (args, prefixes)-- Prefixes specify which parameters, in order, to check for display options-- They each have numbers auto-appended, e.g. 'label1', 'label 1', & 'l1'prefixes = prefixes or defaults.prefixeslocal pages = {}for k, v in pairs(args) doif type(k) == 'number' thenlocal displayfor i = 1, #prefixes dodisplay = args[prefixes[i] .. k]if display then break endendlocal page = display andstring.format('%s|%s', string.gsub(v, '|.*$', ''), display) or vpages[#pages + 1] = pageendendreturn pagesend-- Produces a labelled pages-list hatnote.-- The main frame (template definition) takes 1 or 2 arguments, for a singular-- and (optionally) plural label respectively:-- * {{#invoke:Labelled list hatnote|labelledList|Singular label|Plural label}}-- The resulting template takes pagename & label parameters normally.function p.labelledList (frame)mArguments = require('Module:Arguments')local labels = {frame.args[1] or defaults.label}labels[2] = frame.args[2] or labels[1]local template = frame:getParent():getTitle()local args = mArguments.getArgs(frame, {parentOnly = true})local pages = p.preprocessDisplays(args)local options = {extraclasses = frame.args.extraclasses,category = args.category,selfref = frame.args.selfref or args.selfref,template = template}return p._labelledList(pages, labels, options)endfunction p._labelledList (pages, labels, options)labels = labels or {}if #pages == 0 thenreturn mHatnote.makeWikitextError('no page names specified',(options.template or defaults.template) .. '#Errors',options.category)endlabel = (#pages == 1 and labels[1] or labels[2]) or defaults.labellocal text = string.format(options.labelForm or defaults.labelForm,label,mHatlist.andList(pages, true))local hnOptions = {extraclasses = options.extraclasses,selfref = options.selfref}return mHatnote._hatnote(text, hnOptions)endreturn p

This article uses material from the Wikipedia article Module:Labelled list hatnote, which is released under the Creative Commons Attribution-ShareAlike 3.0 license ("CC BY-SA 3.0"); additional terms may apply. (view authors). Content is available under CC BY-SA 3.0 unless otherwise noted. Images, videos and audio are available under their respective licenses.
#Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc. Wiki ( is an independent company and has no affiliation with Wikimedia Foundation.