پودمان:Citation/Utilities
توضیحات این پودمان میتواند در پودمان:Citation/Utilities/توضیحات قرار گیرد.
--------------------------------------------------------------------------------
-- Module:Citation/Utilities
-- بخش ۱: توابع پایه عمومی
--------------------------------------------------------------------------------
local U = {}
--------------------------------------------------------------------------------
-- حذف فاصلههای اضافی ابتدا و انتها
--------------------------------------------------------------------------------
function U.trim(s)
if type(s) ~= "string" then
return s
end
return mw.text.trim(s)
end
--------------------------------------------------------------------------------
-- بررسی تهی بودن مقدار
--------------------------------------------------------------------------------
function U.isEmpty(v)
return v == nil or v == "" or (type(v) == "string" and mw.text.trim(v) == "")
end
--------------------------------------------------------------------------------
-- تبدیل مقدار به رشته امن
--------------------------------------------------------------------------------
function U.toString(v)
if v == nil then
return ""
end
return tostring(v)
end
--------------------------------------------------------------------------------
-- اتصال لیست با جداکننده
--------------------------------------------------------------------------------
function U.join(list, sep)
if type(list) ~= "table" then
return U.toString(list)
end
local out = {}
for _, v in ipairs(list) do
if not U.isEmpty(v) then
table.insert(out, U.trim(v))
end
end
return table.concat(out, sep or "، ")
end
--------------------------------------------------------------------------------
-- اگر مقدار وجود داشت، پیشوند + مقدار
--------------------------------------------------------------------------------
function U.prefix(label, value)
if U.isEmpty(value) then
return ""
end
return label .. U.toString(value)
end
--------------------------------------------------------------------------------
-- تبدیل nil به مقدار پیشفرض
--------------------------------------------------------------------------------
function U.default(v, d)
if U.isEmpty(v) then
return d
end
return v
end
--------------------------------------------------------------------------------
-- حذف HTML ساده (حداقلی، نه کامل)
--------------------------------------------------------------------------------
function U.stripHtml(s)
if type(s) ~= "string" then
return s
end
return mw.text.killMarkers(
mw.text.unstripNoWiki(
mw.text.decode(s)
)
)
end
--------------------------------------------------------------------------------
-- ایمنسازی لینک ساده
--------------------------------------------------------------------------------
function U.makeUrl(url)
if U.isEmpty(url) then
return ""
end
url = U.trim(url)
-- اگر پروتکل ندارد
if not url:match("^https?://") then
url = "https://" .. url
end
return url
end
--------------------------------------------------------------------------------
-- تبدیل ساده به Italic
--------------------------------------------------------------------------------
function U.italic(s)
if U.isEmpty(s) then
return ""
end
return "''" .. s .. "''"
end
--------------------------------------------------------------------------------
-- حذف کاراکترهای اضافی انتهای رشته (نقطه و فاصله)
--------------------------------------------------------------------------------
function U.cleanEnd(s)
if type(s) ~= "string" then
return s
end
return (s:gsub("[%s%.،]+$", ""))
end
--------------------------------------------------------------------------------
return U