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

ط
غيّر إعدادات حماية »وحدة:Hatnote list«: بوت: [https://w.wiki/7NGP تحسين مستوي الحماية] ([تعديل=السماح للمحررين فقط] (غير محدد) [النقل=السماح للمحررين فقط] (غير محدد))
ط (مراجعة واحدة)
ar>LokasBot
ط (غيّر إعدادات حماية »وحدة:Hatnote list«: بوت: [https://w.wiki/7NGP تحسين مستوي الحماية] ([تعديل=السماح للمحررين فقط] (غير محدد) [النقل=السماح للمحررين فقط] (غير محدد)))
سطر ٩: سطر ٩:


local mArguments --initialize lazily
local mArguments --initialize lazily
local mFormatLink = require('Module:Format link')
local mHatnote = require('Module:Hatnote')
local mHatnote = require('Module:Hatnote')
local libraryUtil = require('libraryUtil')
local libraryUtil = require('libraryUtil')
سطر ٢٣: سطر ٢٤:
--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
}
}
--Searches display text only
local function searchDisp(haystack, needle)
return string.find(
string.sub(haystack, (string.find(haystack, '|') or 0) + 1), needle
)
end


-- Stringifies a list generically; probably shouldn't be used directly
-- Stringifies a list generically; probably shouldn't be used directly
function stringifyList(list, options)
local function stringifyList(list, options)
-- Type-checks, defaults, and a shortcut
-- Type-checks, defaults, and a shortcut
checkType("stringifyList", 1, list, "table")
checkType("stringifyList", 1, list, "table")
سطر ٤٢: سطر ٥٠:
local s = options.space
local s = options.space
-- Format the list if requested
-- Format the list if requested
if options.formatted then list = mHatnote.formatPages(unpack(list)) end
if options.formatted then
-- Set the separator; if any item contains it, use the alternate separator
list = mFormatLink.formatPages(
{categorizeMissing = mHatnote.missingTargetCat}, list
)
end
-- Set the separator
local separator = options.separator
local separator = options.separator
--searches display text only
 
function searchDisp(t, f)
-- Set the conjunction
return string.find(string.sub(t, (string.find(t, '|') or 0) + 1), f)
local conjunction = options.conjunction
end
for k, v in pairs(list) do
if searchDisp(v, separator) then
separator = options.altSeparator
break
end
end
-- Set the conjunction, apply Oxford comma, and force a comma if #1 has "§"
local conjunction = s .. options.conjunction .. s
if #list == 2 and searchDisp(list[1], "§") or #list > 2 then
conjunction = separator .. conjunction
end
-- Return the formatted string
-- Return the formatted string
return mw.text.listToText(list, separator .. s, conjunction)
return mw.text.listToText(list, s .. "<span>"..separator .."</span>" , s .. "<span>".. conjunction.."</span>")
end
end


--DRY function
--DRY function
function conjList (conj, list, fmt)
function p.conjList (conj, list, fmt)
return stringifyList(list, {conjunction = conj, formatted = fmt})
return stringifyList(list, {conjunction = conj, formatted = fmt})
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 p.conjList("و", ...) end
function p.orList (...) return conjList("or", ...) end
function p.orList (...) return p.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، طالع %s.',
}
}


--Collapses duplicate punctuation
--Collapses duplicate punctuation
function punctuationCollapse (text)
local function punctuationCollapse (text)
local replacements = {
local replacements = {
["%.%.$"] = ".",
["%.%.$"] = ".",
["%?%.$"] = "?",
["%?%.$"] = "؟",
["%!%.$"] = "!",
["%!%.$"] = "!",
["%.%]%]%.$"] = ".]]",
["%.%]%]%.$"] = ".]]",
["%?%]%]%.$"] = "?]]",
["%?%]%]%.$"] = "؟]]",
["%!%]%]%.$"] = "!]]"
["%!%]%]%.$"] = "!]]"
}
}
سطر ١٧١: سطر ١٧١:
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 mHatnote._formatLink(mHatnote.disambiguate(options.title))
local pagesStr =
p.andList(v.pages, true) or
mFormatLink._formatLink{
categorizeMissing = mHatnote.missingTargetCat,
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)
مستخدم مجهول