پودمان: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(" | function p.andList (...) return conjList("and", ...) end | ||
function p.orList (...) return conjList(" | 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 = ' | 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 | ||
for k, v in pairs(forSeeTable) do | |||
local useStr = v.use or options.otherText | |||
local pagesStr = p.andList(v.pages, true) or mHatnote._formatLink{link = mHatnote.disambiguate(options.title)} | |||
local forSeeStr = string.format(options.forSeeForm, useStr, pagesStr) | |||
forSeeStr = punctuationCollapse(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, ' ') |