پودمان:Hatnote list: تفاوت میان نسخه‌ها

۳۰۲ بایت اضافه‌شده ،  ‏۱۶ ژوئن ۲۰۲۰
switch back to Module:Hatnote instead of Module:Hatnote/sandbox
(مطابقت با دیگر الگوها)
 
(switch back to Module:Hatnote instead of Module:Hatnote/sandbox)
خط ۲۳: خط ۲۳:
--default options table used across the list stringification functions
--default options table used across the list stringification functions
local stringifyListDefaultOptions = {
local stringifyListDefaultOptions = {
conjunction = "و",
conjunction = "and",
separator = "،",
separator = ",",
altSeparator = "؛",
altSeparator = ";",
space = " ",
space = " ",
formatted = false
formatted = false
خط ۴۶: خط ۴۶:
local separator = options.separator
local separator = options.separator
--searches display text only
--searches display text only
function searchDisp(t, f)
local function searchDisp(t, f)
return string.find(string.sub(t, (string.find(t, '|') or 0) + 1), f)
return string.find(string.sub(t, (string.find(t, '|') or 0) + 1), f)
end
end
خط ۷۰: خط ۷۰:


-- Stringifies lists with "and" or "or"
-- Stringifies lists with "and" or "or"
function p.andList (...) return conjList("و", ...) end
function p.andList (...) return conjList("and", ...) end
function p.orList (...) return conjList("یا", ...) end
function p.orList (...) return conjList("or", ...) end


--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
خط ۸۲: خط ۸۲:
--default options table used across the forSee family of functions
--default options table used across the forSee family of functions
local forSeeDefaultOptions = {
local forSeeDefaultOptions = {
andKeyword = 'و',
andKeyword = 'and',
title = mw.title.getCurrentTitle().text,
title = mw.title.getCurrentTitle().text,
otherText = 'دیگر کاربردها',
otherText = 'other uses',
forSeeForm = 'برای %%s را مشاهده کنید.'
forSeeForm = 'For %s, see %s.',
}
}


خط ۹۲: خط ۹۲:
local replacements = {
local replacements = {
["%.%.$"] = ".",
["%.%.$"] = ".",
["%?%.$"] = "؟",
["%?%.$"] = "?",
["%!%.$"] = "!",
["%!%.$"] = "!",
["%.%]%]%.$"] = ".]]",
["%.%]%]%.$"] = ".]]",
["%?%]%]%.$"] = "؟]]",
["%?%]%]%.$"] = "?]]",
["%!%]%]%.$"] = "!]]"
["%!%]%]%.$"] = "!]]"
}
}
خط ۱۲۵: خط ۱۲۵:
local i = from
local i = from
local terminated = false
local terminated = false
-- If there is extra text, and no arguments are given, give nil value
-- to not produce default of "For other uses, see foo (disambiguation)"
if options.extratext and i > maxArg then return nil end
-- Loop to generate rows
-- Loop to generate rows
repeat
repeat
خط ۱۵۷: خط ۱۶۰:
function p.forSeeTableToString (forSeeTable, options)
function p.forSeeTableToString (forSeeTable, options)
-- Type-checks and defaults
-- Type-checks and defaults
checkType("forSeeTableToString", 1, forSeeTable, "table")
checkType("forSeeTableToString", 1, forSeeTable, "table", true)
checkType("forSeeTableToString", 2, options, "table", true)
checkType("forSeeTableToString", 2, options, "table", true)
options = options or {}
options = options or {}
خط ۱۶۵: خط ۱۶۸:
-- Stringify each for-see item into a list
-- Stringify each for-see item into a list
local strList = {}
local strList = {}
for k, v in pairs(forSeeTable) do
if forSeeTable then
local useStr = v.use or options.otherText
for k, v in pairs(forSeeTable) do
local pagesStr = p.andList(v.pages, true) or
local useStr = v.use or options.otherText
mHatnote._formatLink(mHatnote.disambiguate(options.title))
local pagesStr = p.andList(v.pages, true) or mHatnote._formatLink{link = mHatnote.disambiguate(options.title)}
local forSeeStr = string.format(options.forSeeForm, useStr, pagesStr)
local forSeeStr = string.format(options.forSeeForm, useStr, pagesStr)
forSeeStr = punctuationCollapse(forSeeStr)
forSeeStr = punctuationCollapse(forSeeStr)
table.insert(strList, forSeeStr)
table.insert(strList, forSeeStr)
end
end
end
if options.extratext then table.insert(strList, punctuationCollapse(options.extratext..'.')) end
-- Return the concatenated list
-- Return the concatenated list
return table.concat(strList, ' ')
return table.concat(strList, ' ')
کاربر ناشناس