پرش به محتوا

پودمان:Citation/Utilities

از ویکی البرز
نسخهٔ تاریخ ‏۳۰ ژوئن ۲۰۲۶، ساعت ۲۰:۲۷ توسط Modir (بحث | مشارکت‌ها) (صفحه‌ای تازه حاوی «-------------------------------------------------------------------------------- -- Module:Citation/Utilities -- بخش ۱: توابع پایه عمومی -------------------------------------------------------------------------------- local U = {} -------------------------------------------------------------------------------- -- حذف فاصله‌های اضافی ابتدا و انتها -----------------------------------------...» ایجاد کرد)
(تفاوت) → نسخهٔ قدیمی‌تر | نمایش نسخهٔ فعلی (تفاوت) | نسخهٔ جدیدتر ← (تفاوت)

توضیحات این پودمان می‌تواند در پودمان: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