labelled List Hatnote

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 lazily local p = {}  -- Defaults global to this module local defaults = { label = 'See also', --Final fallback for label argument labelForm = '%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.prefixes local pages = {} for k, v in pairs(args) do if type(k) == 'number' then local display for i = 1, #prefixes do display = args[prefixes[i] .. k] if display then break end end local page = display and string.format('%s|%s', string.gsub(v, '|.*$', ''), display) or v pages[#pages + 1] = page end end return pages end  -- 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) end  function p._labelledList (pages, labels, options) labels = labels or {} if #pages == 0 then return mHatnote.makeWikitextError( 'no page names specified', (options.template or defaults.template) .. '#Errors', options.category ) end label = (#pages == 1 and labels[1] or labels[2]) or defaults.label local 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) end  return p 

Tags:

🔥 Trending searches on Wiki Fiji Hindi:

1980BaadalBengali bhasa1954ThimphuRepublic of the CongoTambaChina19 NovemberAurangabad (M) - Ward No.2201410 December21 DecemberPop music1859PoetryJean-Jacques RousseauThe NetherlandsLatviaSouth KoreaIcelandEngland1975Alfred Hitchcock21st century13 July1 October1937193419631915ChandarmaSouth AmericaJulyShona bhasa18731932Martial artsBangladesh196512 MarchJasprit BumrahCanada1878Loha3 AugustSamundarPurana GreeceB. D. LakshmanZoroastrianism26 October29 JulyAmi ChandraNew Labour Unity Party (Fiji)Charlie ChaplinViolinYellow River30 OctoberTinSubhas Chandra BoseDNASwitzerlandMercury (element)8 July20 November11 AugustJwala mukhi200915 FebruaryItaly5 AprilBacteriaGeorge Byron🡆 More