وحدة:DemoTemplate2
المظهر
صُنفت هذه الوحدة على أنها في مرحلة بيتا. عندما تصل الوحدة لهذه المرحلة، يمكن أن يوسع استخدامها في الصفحات الأخرى. لكن يجب توخي الحذر من أن الوحدات في هذه المرحلة ما زالت حديثة العهد لذلك وجب توخي الحذر عند الاستخدام وملاحظة أي أخطاء تنتج عنها. من العرف أن المجتمع سوف يوصل الوحدات في هذه المرحلة للتي بعدها عبر صفحات النقاش الخاصة بالوحدة أو أي مكان يعلن عن هذه الوحدة عبر ملاحظة أن هذه الوحدة تعمل بشكل صحيح والجميع راضٍ عن أدائها. |
الاستعمال
[عدل]ضع ببساطة "#invoke:DemoTemplate2|
" قبل استدعاء قالب. على سبيل المثال، {{#invoke:DemoTemplate2|Convert|10|km|nmi|abbr=off}}
ينتج ما يلي:
توصيف يظهر {{Convert|10|km|nmi| abbr=off}}
10 كيلومتر (5.4 ميل بحري)
تتناول هذه الوحدة أسماء المعلمات وموضعيتها، كما تساوي العلامات في كل من اسماء المعلمات وقيمها بشكل صحيح،
لذلك هذا (على سبيل المثال) سيعمل بنجاح: {{#invoke:DemoTemplate2|1x|1=معلمة مع = فيها}}
توصيف يظهر {{1x| 1=معلمة مع = فيها}}
معلمة مع = فيها
لاحظ أن الأنابيب |
، والأقواس المتعرجة {
أو }
، وما إلى ذلك لا تتم معالجتها بشكل صحيح بواسطة الوحدة:
{{#invoke:DemoTemplate2|1x|foo{{!}}bar}}
توصيف يظهر {{1x|foo|bar}}
foo
الوسائط
[عدل]عنوان
[عدل]|demotitle=
توصيف | يظهر |
---|---|
{{1x|foo|bar}} | foo |
سطر جديد
[عدل]باستخدام وسيط |_demonewline_=1
{{#invoke:DemoTemplate2|1x|foo|bar|_demonewline_=t}}
← توصيف | يظهر |
---|---|
{{1x |foo |bar }} | foo |
تغيير الاتجاه
[عدل]باستخدام وسيط |_dir_=rtl
{{#invoke:DemoTemplate2|1x|foo|bar|demotitle=عنوان|_dir_=rtl|_demonewline_=t}}
← توصيف | يظهر |
---|---|
{{1x |foo |bar }} | foo |
التنسيق
[عدل]باستخدام وسيط |syntaxhighlight=1
{{#invoke:DemoTemplate2|علم|USA|syntaxhighlight=t|_demonewline_=t|demotitle=عنوان}}
← توصيف | يظهر |
---|---|
USA |
استخدام _sandbox_
[عدل]استخدام وسيط |_sandbox_=
{{#invoke:DemoTemplate2|علم|USA|syntaxhighlight=t|_sandbox_=علم/ملعب|_demonewline_=t|demotitle=عنوان}}
← توصيف | قالب:علم | قالب:علم/ملعب |
---|---|---|
USA | الولايات المتحدة |
{{#invoke:DemoTemplate2|#invoke:wikidata2|getSiteLink|Q76|_sandbox_=#invoke:wikidata2/ملعب}}
← توصيف | وحدة:wikidata2 | وحدة:wikidata2/ملعب |
---|---|---|
{{#invoke:wikidata2|getSiteLink|Q76}} | باراك أوباما | باراك أوباما |
استخدام _compare_
[عدل]استخدام وسيط |_compare_=
{{#invoke:DemoTemplate2|علم|USA|_sandbox_=علم/ملعب|_demonewline_=t|demotitle=عنوان|_compare_=t|syntaxhighlight=t}}
← توصيف | قالب:علم | قالب:علم/ملعب | مطابق؟ |
---|---|---|---|
USA | الولايات المتحدة | false |
{{#invoke:DemoTemplate2|#invoke:wikidata2|getSiteLink|Q76|_sandbox_=#invoke:wikidata2/ملعب|_compare_=t}}
← توصيف | وحدة:wikidata2 | وحدة:wikidata2/ملعب | مطابق؟ |
---|---|---|---|
{{#invoke:wikidata2|getSiteLink|Q76}} | باراك أوباما | باراك أوباما | true |
أنظر ايضًا
[عدل]
require("strict")
--local newBuffer = require('Module:OutputBuffer')
local mt = {}
local function isvalid(x)
if x and x ~= "" then
return x
end
return nil
end
function mt.__index(t, title)
return function(frame)
local false_args = {
["_sandbox_"] = "",
["_compare_"] = "",
["demotitle"] = "",
["_dir_"] = "",
["_demonewline_"] = "",
["demonewline"] = "",
["syntaxhighlight"] = ""
}
local space = " "
local line = ""
if isvalid(frame.args["_demonewline_"]) or isvalid(frame.args["demonewline"]) then
line = "\n"
space = ""
end
local width50 = "width:50%;"
local text = ""
local text2 = ""
local title2 = ""
local compare
if isvalid(frame.args["_sandbox_"]) then
title2 = frame.args["_sandbox_"]
width50 = "width:33%;"
if isvalid(frame.args["_compare_"]) then
compare = true
end
end
local tit1 = "يظهر"
local tit2 = ""
if isvalid(title2) then
-- find "#invoke:" in start of tit1 and remove it
tit1 = title
tit2 = title2
local pos = string.find(tit1, "#invoke:") or string.find(tit1, "#استدعاء:")
if pos then
tit1 = string.gsub(tit1, "#invoke:", "")
tit1 = string.gsub(tit1, "#استدعاء:", "")
tit1 = "[[وحدة:" .. tit1 .. "]]"
else
tit1 = "[[قالب:" .. tit1 .. "]]"
end
local pos2 = string.find(tit2, "#invoke:") or string.find(tit2, "#استدعاء:")
if pos2 then
tit2 = string.gsub(tit2, "#invoke:", "")
tit2 = string.gsub(tit2, "#استدعاء:", "")
tit2 = "[[وحدة:" .. tit2 .. "]]"
else
tit2 = "[[قالب:" .. tit2 .. "]]"
end
end
--local getBuffer, print, printf = newBuffer()
--printf('{{%s' .. line, title)
text = text .. "{{" .. title .. line
text2 = text2 .. "{{" .. title2 .. line
local ipairsArgs = {}
for k, v in ipairs(frame.args) do
if string.find(v, "=", 1, true) then
break
end
ipairsArgs[k] = true
--printf('|%s' .. line, v)
-- trim v
v = mw.text.trim(v)
text = text .. "|" .. v .. line
text2 = text2 .. "|" .. v .. line
end
for k, v in pairs(frame.args) do
if not false_args[k] and not ipairsArgs[k] then
k = mw.text.trim(k)
v = mw.text.trim(v)
--printf('|%s=%s' .. line, string.gsub(k, '=', '{{=}}'), v)
text = text .. "|" .. space .. string.gsub(k, "=", "{{=}}") .. "=" .. v .. line
text2 = text2 .. "|" .. space .. string.gsub(k, "=", "{{=}}") .. "=" .. v .. line
end
end
--print('}}')
text = text .. "}}"
text2 = text2 .. "}}"
mw.log(text .. "\n")
--local buffer = getBuffer()
local style = "table-layout:fixed; width:100%; margin-top:0;margin-left:0; border-width:medium; padding:0;"
local tab = mw.html.create("table"):
--:addClass('sortable')
cssText(style)
if frame.args.demotitle and frame.args.demotitle ~= "" then
tab:tag("caption"):tag("b"):wikitext(frame.args.demotitle)
end
local dir = isvalid(frame.args["_dir_"]) or "ltr"
local tr = tab:tag("tr")
tr:tag("th")
:attr("scope", "col")
:cssText(width50)
:wikitext("توصيف")
tr:tag("th")
:attr("scope", "col")
:cssText(width50)
:wikitext(tit1)
if isvalid(title2) then
tr:tag("th")
:attr("scope", "col")
:cssText(width50)
:wikitext(tit2)
if compare then
tr:tag("th")
:attr("scope", "col")
:cssText("width:10%;")
:wikitext('مطابق؟')
end
end
local td1style = "width:50%; background:#f9f9f9; border-width:1px;border-style:solid none none solid;" ..
"border-color:#ddd;padding:9px 5px 5px; vertical-align:top;"
local prestyle = "margin:0;border:none;padding:0; word-wrap:break-word;" ..
"white-space:-moz-pre-wrap;white-space:-o-pre-wrap;white-space:-pre-wrap;white-space:pre-wrap;"
local td2style = "width:50%; background:#f9f9f9;border-width:1px;border-style:solid solid none solid;" ..
"border-color:#ddd; padding:5px; vertical-align:top;"
local nowikitext = mw.text.nowiki(text)
local tr2 = tab:tag("tr")
if isvalid(frame.args.syntaxhighlight) then
nowikitext = frame:extensionTag("syntaxhighlight", text, { lang = "html+handlebars" })
td1style = "width:50%; background:#f9f9f9; border-width:1px;border-style:solid none none solid;" ..
"border-color:#ddd;padding:0px; vertical-align:top;"
tr2:tag("td")
:cssText(td1style)
:tag("div")
:attr("dir", dir)
:wikitext(nowikitext)
else
tr2:tag("td")
:cssText(td1style)
:tag("pre")
:attr("dir", dir)
:cssText(prestyle)
:wikitext(nowikitext)
end
text = frame:preprocess(text)
tr2:tag("td")
:cssText(td2style)
:tag("span")
:wikitext(text)
if isvalid(title2) then
text2 = frame:preprocess(text2)
tr2:tag("td")
:cssText(td2style)
:tag("span")
:wikitext(text2)
if compare then
local result = 'false'
local color = '#fcc0c0'
if text2 == text then
result = 'true'
color = '#c0fcc0'
end
tr2:tag("td")
-- :cssText("background:" .. color .. ";")
:css("background", color)
:tag("span")
:wikitext(result)
end
end
return tostring(tab)
end
end
return setmetatable({}, mt)