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

۳۰۲ بایت حذف‌شده ،  ‏۲۹ ژوئن ۲۰۲۰
جز
۱ نسخه واردشده
(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 = "and",
conjunction = "و",
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
local function searchDisp(t, f)
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("and", ...) end
function p.andList (...) return conjList("و", ...) end
function p.orList (...) return conjList("or", ...) end
function p.orList (...) return conjList("یا", ...) 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 = 'and',
andKeyword = 'و',
title = mw.title.getCurrentTitle().text,
title = mw.title.getCurrentTitle().text,
otherText = 'other uses',
otherText = 'دیگر کاربردها',
forSeeForm = 'For %s, see %s.',
forSeeForm = 'برای %%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", true)
checkType("forSeeTableToString", 1, forSeeTable, "table")
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 = {}
if forSeeTable then
for k, v in pairs(forSeeTable) do
for k, v in pairs(forSeeTable) do
local useStr = v.use or options.otherText
local useStr = v.use or options.otherText
local pagesStr = p.andList(v.pages, true) or
local pagesStr = p.andList(v.pages, true) or mHatnote._formatLink{link = mHatnote.disambiguate(options.title)}
mHatnote._formatLink(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, ' ')