الفرق بين المراجعتين لصفحة: «وحدة:Labelled list hatnote»

لا يوجد ملخص تحرير
لا ملخص تعديل
لا ملخص تعديل
وسم: مسترجع
سطر ٦: سطر ٦:
-- 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 = 'وحدة:Labelled list hatnote'
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
string.format('%s|%s', string.gsub(v, '|.*$', ''), display) or v
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


local linkedPages = {}
-- Custom function to handle "و" replacement
for i, page in ipairs(pages) do
local function andList(pages)
linkedPages[i] = string.format('[[%s]]', page)
if #pages == 2 then
end
return table.concat(pages, ' و ')
 
else
-- بررسی تعداد مقالات برای اعمال فرمت مناسب
local allButLast = table.concat(pages, '، ', 1, #pages - 1)
local list
return allButLast .. '، و ' .. pages[#pages]
if #linkedPages == 2 then
end
list = table.concat(linkedPages, ' و ')
else
list = table.concat(linkedPages, '، ')
list = list:gsub("، ([]+)$", "، و %1")
end
end


-- افزودن نقطه در انتها
local text = mw.ustring.format(
list = list .. '.'
 
local text = string.format(
options.labelForm or defaults.labelForm,
options.labelForm or defaults.labelForm,
label,
label,
list
andList(pages)
)
) .. '.' -- Add the final period


local hnOptions = {
local hnOptions = {