وحدة:DemoTemplate
صنفت هذه الوحدة على أنها في مرحلة بيتا. عندما تصل الوحدة لهذه المرحلة، يمكن أن يوسع إستخدامها في الصفحات التانيه. لكن يجب توخي الحذر من أن الوحدات في هذه المرحلة ما زالت حديثة العهد لذلك وجب توخي الحذر عند الإستخدام وملاحظة أي أخطاء تنتج عنها. من العرف أن المجتمع سوف يوصل الوحدات في هذه المرحلة للتي بعدها عبر صفحات النقاش الخاصة بالوحدة أو أي مكان يعلن عن هذه الوحدة عبر ملاحظة أن هذه الوحدة تعمل بشكل صحيح والجميع راضا عن أدائها. |
الاستعمال
تعديلضع ببساطة "#invoke:DemoTemplate|" قبل استدعاء قالب. على سبيل المثال، {{#invoke:DemoTemplate|Convert|10|km|nmi|abbr=off}}
ينتج ما يلي:
{{Convert|10|km|nmi|abbr=off}}
→ 10 كيلومترs (5.4 ميل بحريs)
تتناول هذه الوحدة أسماء المعلمات وموضعيتها، كما تساوي العلامات في كل من اسماء المعلمات وقيمها بشكل صحيح،
لذلك هذا (على سبيل المثال) سيعمل بنجاح: {{#invoke:DemoTemplate|1x|1=معلمة مع = فيها}}
{{1x|1=معلمة مع = فيها}}
→ معلمة مع = فيها
لاحظ أن الأنابيب |
، والأقواس المتعرجة {
أو }
، وما إلى ذلك لا تتم معالجتها بشكل صحيح بواسطة الوحدة:
{{#invoke:DemoTemplate|1x|foo{{!}}bar}}
{{1x|foo|bar}}
→ foo
require('strict')
local newBuffer = require('Module:OutputBuffer')
local mt = {}
function mt.__index(t, title)
return function(frame)
local getBuffer, print, printf = newBuffer()
printf('{{%s', title)
local ipairsArgs = {}
for k,v in ipairs(frame.args) do
if string.find(v, '=', 1, true) then
break
end
ipairsArgs[k] = true
printf('|%s', v)
end
for k,v in pairs(frame.args) do
if not ipairsArgs[k] then
printf('|%s=%s', string.gsub(k, '=', '{{=}}'), v)
end
end
print('}}')
local buffer = getBuffer()
-- rather than calling expandTemplate with the title and args we have, call preprocess, so that our code example will always match our output, even in the cases of pipes or other things we should have escaped but didn't
return string.format('<code>%s</code> → %s', mw.text.nowiki(buffer), frame:preprocess(buffer))
end
end
return setmetatable({}, mt)