انتقل إلى المحتوى
القائمة الرئيسة
القائمة الرئيسة
انقل للشريط الجانبي
أخف
تصفح
الصفحة الرئيسة
بوابة المجتمع
أحدث التغييرات
صفحة عشوائية
مساعدة
صفحات خاصة
تبرع
Islamd Wiki
بحث
بحث
العربية
المظهر
إنشاء حساب
دخول
أدوات شخصية
إنشاء حساب
دخول
صفحات للمحررين الذين سجَّلوا خروجهم
تعلَّم المزيد
مساهمات
نقاش
تعديل
وحدة:Unsubst
وحدة
نقاش
English
اقرأ
عدل المصدر
تاريخ
أدوات
أدوات
انقل للشريط الجانبي
أخف
إجراءات
اقرأ
عدل المصدر
تاريخ
عام
ماذا يصل هنا
تغييرات ذات علاقة
معلومات عن هذه الصفحة
في مشاريع أخرى
المظهر
انقل للشريط الجانبي
أخف
تحذير:
أنت غير مسجل الدخول. عنوان الأيبي الخاص بك سيكون معروضا بشكل علني لو قمت بأي تعديلات. لو أنك
سجلت الدخول
أو
أنشأت حسابا
، فتعديلاتك ستنسب لاسم المستخدم الخاص بك، بالإضافة إلى مزايا أخرى.
اختبار ضد السُّخام.
لا
تملأ هذا!
local checkType = require('libraryUtil').checkType local p = {} local BODY_PARAM = '$B' local specialParams = { ['$params'] = 'parameter list', ['$aliases'] = 'parameter aliases', ['$flags'] = 'flags', ['$B'] = 'template content', ['$template-name'] = 'template invocation name override', } function p.main(frame, body) -- If we are substing, this function returns a template invocation, and if -- not, it returns the template body. The template body can be specified in -- the body parameter, or in the template parameter defined in the -- BODY_PARAM variable. This function can be called from Lua or from -- #invoke. -- Return the template body if we aren't substing. if not mw.isSubsting() then if body ~= nil then return body elseif frame.args[BODY_PARAM] ~= nil then return frame.args[BODY_PARAM] else error(string.format( "no template content specified (use parameter '%s' from #invoke)", BODY_PARAM ), 2) end end -- Sanity check for the frame object. if type(frame) ~= 'table' or type(frame.getParent) ~= 'function' or not frame:getParent() then error( "argument #1 to 'main' must be a frame object with a parent " .. "frame available", 2 ) end -- Find the invocation name. local mTemplateInvocation = require('Module:Template invocation') local name if frame.args['$template-name'] and '' ~= frame.args['$template-name'] then name = frame.args['$template-name'] -- override whatever the template name is with this name else name = mTemplateInvocation.name(frame:getParent():getTitle()) end -- Combine passed args with passed defaults local args = {} if string.find( ','..(frame.args['$flags'] or '')..',', ',%s*override%s*,' ) then for k, v in pairs( frame:getParent().args ) do args[k] = v end for k, v in pairs( frame.args ) do if not specialParams[k] then if v == '__DATE__' then v = mw.getContentLanguage():formatDate( 'F Y' ) end args[k] = v end end else for k, v in pairs( frame.args ) do if not specialParams[k] then if v == '__DATE__' then v = mw.getContentLanguage():formatDate( 'F Y' ) end args[k] = v end end for k, v in pairs( frame:getParent().args ) do args[k] = v end end -- Trim parameters, if not specified otherwise if not string.find( ','..(frame.args['$flags'] or '')..',', ',%s*keep%-whitespace%s*,' ) then for k, v in pairs( args ) do args[k] = mw.ustring.match(v, '^%s*(.*)%s*$') or '' end end -- Pull information from parameter aliases local aliases = {} if frame.args['$aliases'] then local list = mw.text.split( frame.args['$aliases'], '%s*,%s*' ) for k, v in ipairs( list ) do local tmp = mw.text.split( v, '%s*>%s*' ) aliases[tonumber(mw.ustring.match(tmp[1], '^[1-9][0-9]*$')) or tmp[1]] = ((tonumber(mw.ustring.match(tmp[2], '^[1-9][0-9]*$'))) or tmp[2]) end end for k, v in pairs( aliases ) do if args[k] and ( not args[v] or args[v] == '' ) then args[v] = args[k] end args[k] = nil end -- Remove empty parameters, if specified if string.find( ','..(frame.args['$flags'] or '')..',', ',%s*remove%-empty%s*,' ) then local tmp = 0 for k, v in ipairs( args ) do if v ~= '' or ( args[k+1] and args[k+1] ~= '' ) or ( args[k+2] and args[k+2] ~= '' ) then tmp = k else break end end for k, v in pairs( args ) do if v == '' then if not (type(k) == 'number' and k < tmp) then args[k] = nil end end end end -- Order parameters if frame.args['$params'] then local params, tmp = mw.text.split( frame.args['$params'], '%s*,%s*' ), {} for k, v in ipairs(params) do v = tonumber(mw.ustring.match(v, '^[1-9][0-9]*$')) or v if args[v] then tmp[v], args[v] = args[v], nil end end for k, v in pairs(args) do tmp[k], args[k] = args[k], nil end args = tmp end return mTemplateInvocation.invocation(name, args) end p[''] = p.main -- For backwards compatibility p['get'] = function ( frame ) if not frame:getParent() then error( '{{#invoke:Unsubst|}} makes no sense without a parent frame' ) end if not frame.args['$B'] then error( '{{#invoke:Unsubst|}} requires parameter $B (template content)' ) end if mw.isSubsting() then ---- substing -- Combine passed args with passed defaults local args = {} for k, v in pairs( frame.args ) do if not specialParams[k] then if v == '__DATE__' then v = mw.getContentLanguage():formatDate( 'F Y' ) end args[k] = v end end for k, v in pairs( frame:getParent().args ) do args[k] = v end -- Build an equivalent template invocation -- First, find the title to use local titleobj = mw.title.new(frame:getParent():getTitle()) local title if titleobj.namespace == 10 then -- NS_TEMPLATE title = titleobj.text elseif titleobj.namespace == 0 then -- NS_MAIN title = ':' .. titleobj.text else title = titleobj.prefixedText end if frame.args['$N'] and frame.args['$N'] ~= '' then title = frame.args['$N'] end -- Build the invocation body with numbered args first, then named local ret = '{{' .. title for k, v in ipairs( args ) do if string.find( v, '=', 1, true ) then -- likely something like 1=foo=bar, we need to do it as a named arg break end ret = ret .. '|' .. v args[k] = nil end for k, v in pairs( args ) do ret = ret .. '|' .. k .. '=' .. v end return ret .. '}}' else ---- Not substing -- Just return the "body" return frame.args['$B'] end end return p
ملخص:
يعني الضغط على مفتاح «نشر التغييرات» الموافقة على
شروط الاستخدام
، ويتضمَّن هذا الموافقة على نشر المساهمة نشرًا لا يُمكِن التراجع عنه تحت
رخصة المشاع الإبداعي المُلزِمة بنسب العمل للمؤلِّف وبترخيص المشتقات بالمثل 4.0
و
رخصة جنو للوثائق الحرة
.
إلغاء
مساعدة التحرير
(تفتح في نافذة جديدة)
صفحة متضمنة في هذه الصفحة:
وحدة:Unsubst/شرح
(
عدل
)
بحث
بحث
تعديل
وحدة:Unsubst
أضف لغات
أضف موضوعًا