٦٤
تعديل
لا ملخص تعديل |
لا ملخص تعديل وسم: مسترجع |
||
| سطر ٦: | سطر ٦: | ||
-- Defaults global to this module | -- Defaults global to this module | ||
local defaults = { | local defaults = { | ||
label = 'انظر أيضًا', --Final fallback for label argument | label = 'انظر أيضًا', -- Final fallback for label argument | ||
labelForm = '%s: %s', | labelForm = '%s: %s', | ||
prefixes = {' | prefixes = {'label', 'label ', 'l'}, | ||
template = ' | template = 'Module:Labelled list hatnote' | ||
} | } | ||
-- Helper function that pre-combines display parameters into page arguments. | -- Helper function that pre-combines display parameters into page arguments. | ||
-- Also compresses sparse arrays, as a desirable side-effect. | -- Also compresses sparse arrays, as a desirable side-effect. | ||
function p.preprocessDisplays (args, prefixes) | 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 | prefixes = prefixes or defaults.prefixes | ||
local pages = {} | local pages = {} | ||
| سطر ٢٥: | سطر ٢٧: | ||
end | end | ||
local page = display and | local page = display and | ||
mw.ustring.format('%s|%s', mw.ustring.gsub(v, '|.*$', ''), display) or v | |||
pages[#pages + 1] = page | pages[#pages + 1] = page | ||
end | end | ||
| سطر ٣٧: | سطر ٣٩: | ||
-- * {{#invoke:Labelled list hatnote|labelledList|Singular label|Plural label}} | -- * {{#invoke:Labelled list hatnote|labelledList|Singular label|Plural label}} | ||
-- The resulting template takes pagename & label parameters normally. | -- The resulting template takes pagename & label parameters normally. | ||
function p.labelledList (frame) | function p.labelledList(frame) | ||
mArguments = require('Module:Arguments') | mArguments = require('Module:Arguments') | ||
local labels = {frame.args[1] or defaults.label} | local labels = {frame.args[1] or defaults.label} | ||
labels[2] = frame.args[2] or labels[1] | labels[2] = frame.args[2] or labels[1] | ||
labels[3] = frame.args[3] --no defaulting | labels[3] = frame.args[3] -- no defaulting | ||
labels[4] = frame.args[4] --no defaulting | labels[4] = frame.args[4] -- no defaulting | ||
local template = frame:getParent():getTitle() | local template = frame:getParent():getTitle() | ||
local args = mArguments.getArgs(frame, {parentOnly = true}) | local args = mArguments.getArgs(frame, {parentOnly = true}) | ||
| سطر ٥٥: | سطر ٥٧: | ||
end | end | ||
function p._labelledList (pages, labels, options) | function p._labelledList(pages, labels, options) | ||
labels = labels or {} | labels = labels or {} | ||
if #pages == 0 then | if #pages == 0 then | ||
| سطر ٧٦: | سطر ٧٨: | ||
end | end | ||
-- Custom function to handle "و" replacement | |||
local function andList(pages) | |||
if #pages == 2 then | |||
return table.concat(pages, ' و ') | |||
else | |||
local allButLast = table.concat(pages, '، ', 1, #pages - 1) | |||
return allButLast .. '، و ' .. pages[#pages] | |||
end | |||
end | end | ||
local text = mw.ustring.format( | |||
local text = | |||
options.labelForm or defaults.labelForm, | options.labelForm or defaults.labelForm, | ||
label, | label, | ||
andList(pages) | |||
) | ) .. '.' -- Add the final period | ||
local hnOptions = { | local hnOptions = { | ||