Jump to content

Module:Tb

From wikishia

Documentation for this module may be created at Module:Tb/doc

-- تعریف ماژول
local p = {}

-- تابع اصلی برای رندر کردن تب گرافیکی
function p.Tab(frame)
    -- گرفتن آرگومان‌ها از فراخوانی قالب والد یا مستقیم
    local parentArgs = frame:getParent() and frame:getParent().args or {} -- آرگومان‌های قالب والد
    local directArgs = frame.args or {} -- آرگومان‌های مستقیم (اگر بدون قالب فراخوانی بشه)
    local args = {} -- جدول نهایی آرگومان‌ها

    -- ترکیب آرگومان‌ها: اولویت با parentArgs برای اطمینان از دریافت درست
    for k, v in pairs(directArgs) do args[k] = v end
    for k, v in pairs(parentArgs) do args[k] = v end

    -- تابع کمکی برای گرفتن مقدار از آرگومان‌ها با کلیدهای مختلف
    local function getInput(keys, default)
        for _, key in ipairs(keys) do -- بررسی تک‌تک کلیدها
            if args[key] and args[key] ~= "" then -- اگر کلید وجود داشت و خالی نبود
                return args[key]
            end
        end
        return default -- اگر هیچ کلیدی پیدا نشد، مقدار پیش‌فرض
    end

    -- گرفتن مقادیر مورد نیاز (در صورت نیاز به گسترش در آینده)
    local styles = getInput({"styles", "استایل"}, "Module:Tb/styles.css") -- مسیر فایل CSS (قابل تغییر)

    -- اضافه کردن استایل‌های قالب با استفاده از تگ templatestyles
    local templatestyles = frame:extensionTag{
        name = 'templatestyles', -- نام تگ برای لود استایل
        args = { src = styles } -- مسیر فایل CSS از آرگومان یا پیش‌فرض
    }

    -- ایجاد ساختار HTML با استفاده از mw.html
    local html = mw.html.create('span') -- span اصلی
        :addClass('tab-container') -- کلاس CSS برای نگهدارنده تب

    -- ساخت بخش‌های تب گرافیکی
    html:tag('span') -- خط سمت چپ
        :addClass('tab-line-left')
    local middle = html:tag('span') -- بخش میانی
        :addClass('tab-middle')
    middle:tag('span') -- دایره اول
        :addClass('tab-circle')
    middle:tag('span') -- خط وسط
        :addClass('tab-line-middle')
    middle:tag('span') -- دایره دوم
        :addClass('tab-circle')
    html:tag('span') -- خط سمت راست
        :addClass('tab-line-right')

    -- برگرداندن HTML به صورت رشته با استایل
    return templatestyles .. tostring(html)
end

-- برگرداندن ماژول
return p

--[[Category:Template:Triple tab Prayer]] -- دسته‌بندی برای قالب مرتبط
--[[Category:Template:Triple tab Guran]] -- دسته‌بندی برای قالب مرتبط دیگر