وحدة:مراجع
توثيق الوحدة [أنشئ] [محو الاختزان][استخدامات] [قوالب]
local p = {}
-- استدعاء وحدة التحقق من الوسائط غير المعروفة
local check = require('Module:Check for unknown parameters')._check
-- الدالة الرئيسية لإنشاء قالب المراجع
function p.reflist(frame)
local args = frame:getParent().args
-- التحقق من الوسائط غير المعروفة
local tracking = check({
['unknown'] = '[[تصنيف:صفحات تستخدم قالب:مراجع مع وسائط غير معروفة|_VALUE_ ]]',
['preview'] = 'الصفحة تستخدم [[قالب:مراجع]] مع وسيط غير مُعرّف "_VALUE_"',
['ignoreblank'] = 'y',
'1', 'colwidth', 'group', 'liststyle', 'refs', 'مراجع', 'محاذاة', 'مجموعة', 'ضبط'
}, args)
-- إعداد التصنيفات بناءً على المدخلات
local class = "reflist"
if args[1] or args.colwidth then
class = class .. " reflist-columns references-column-width"
end
-- إضافة فئات المجموعة
local groupClass = args.group or args["مجموعة"]
if groupClass then
local validGroups = {
["arabic-abajed"] = true,
["arabic-alfabeth"] = true,
["upper-alpha"] = true,
["upper-roman"] = true,
["lower-alpha"] = true,
["lower-greek"] = true,
["lower-roman"] = true,
}
if validGroups[groupClass] then
class = class .. " reflist-" .. groupClass
end
end
-- ضبط المحاذاة
local textAlign = "right" -- المحاذاة الافتراضية
local dir = "rtl" -- الاتجاه الافتراضي
if args["محاذاة"] and args["محاذاة"] ~= "" then
local alignment = args["محاذاة"]
if alignment == "نعم" then
textAlign = "left"
dir = "ltr"
elseif alignment == "يمين" then
textAlign = "right"
dir = "rtl"
end
end
-- تطبيق الضبط (إذا كان الوسيط ضبط = نعم)
if args["ضبط"] == "نعم" then
textAlign = "justify"
-- الاحتفاظ بالاتجاه الافتراضي بناءً على اللغة
end
-- إعداد الأنماط بناءً على المدخلات
local style = "text-align: " .. textAlign .. "; list-style-position: inside; direction: " .. dir .. ";"
if args[1] then
if tonumber(args[1]) and tonumber(args[1]) > 1 then
style = style .. " column-width: auto;"
end
elseif args.colwidth then
style = style .. " column-width: " .. args.colwidth .. ";"
end
if args.liststyle then
style = style .. " list-style-type: " .. args.liststyle .. ";"
end
-- معالجة جميع المراجع
local referencesContent = frame:preprocess("<references group=\"" .. (args.group or args["مجموعة"] or "") .. "\" responsive=\"1\" />")
-- إعداد المحتوى النهائي
local result = mw.html.create("div")
result
:addClass(class)
:attr("style", style)
:wikitext(referencesContent)
-- إرجاع النتيجة مع تتبع الوسائط غير المعروفة
return tostring(result) .. tracking
end
return p