وحدة:Parameters
الاستخدام{{Parameters}}
-- This module implements [[قالب:Parameters]].
-- [SublimeLinter luacheck-globals:mw]
local DEFINITIONS =
{
["image"] = {
["code"] = '<!-- زى example.jpg -->',
["dlist"] = 'زى example.jpg',
},
["صورة"] = {
["code"] = '<!-- زى example.jpg -->',
["dlist"] = 'زى example.jpg',
},
["alt"] = {
["code"] = '<!-- text alternative for image; see WP:ALT -->',
["dlist"] = 'text alternative for image; see [[WP:ALT]]'},
["coordinates"] = {
["code"] = '<!-- استخدم {{Coord}} -->',
["dlist"] = 'استخدم {{قا|Coord}}'},
["coords"] = {
["code"] = '<!-- استخدم {{Coord}} -->',
["dlist"] = 'استخدم {{قا|Coord}}'},
["native_name"] = {
["code"] = '<!-- name in local language; if more than one, separate ' ..
'using {{قائمة بسيطة}} use {{رمز لغة}}, and omit native_name_lang -->',
["dlist"] = 'name in local language; if more than one, separate ' ..
'using {{قا|قائمة بسيطة}}, use {{قا|رمز لغة}}, and omit {{Para|native_name_lang}}'},
["native_name_lang"] = {
["code"] = '<!-- language two- or three-letter ISO code -->',
["dlist"] = 'language two- or three-letter ISO code'},
["start_date"] = {
["code"] = '<!-- {{تاريخ بداية|YYYY|MM|DD|df=y}} -->',
["dlist"] = 'استخدم {{Tlx|Start date|YYYY|MM|DD|df=y}}'},
["end_date"] = {
["code"] = '<!-- {{تاريخ نهاية|YYYY|MM|DD|df=y}} -->',
["dlist"] = 'استخدم {{Tlx|Start date|YYYY|MM|DD|df=y}}'},
["url"] = {
["code"] = '<!-- استخدم {{مسار|example.com}} -->',
["dlist"] = 'استخدم {{قا|URL}}'},
["website"] = {
["code"] = '<!-- استخدم {{مسار|example.com}} -->',
["dlist"] = 'استخدم {{Tls|URL|example.com}}'},}
local p = {}
local removeDuplicates = require('Module:TableTools').removeDuplicates
local yesno = require('Module:Yesno')
local function makeInvokeFunction(funcName)
return function(frame)
local getArgs = require('Module:Arguments').getArgs
return p[funcName](getArgs(frame, {removeBlanks = false}))
end
end
local function extractParams(page)
local source = mw.title.new(page, 'Template'):getContent()
local parameters = {}
for parameter in string.gmatch(source, '{{{(.-)%f[}|<>]') do
table.insert(parameters, parameter)
end
return removeDuplicates(parameters)
end
local function map(tbl, transform)
local returnTable = {}
for k, v in pairs(tbl) do
returnTable[k] = transform(v)
end
return returnTable
end
local function strMap(tbl, transform)
local returnTable = map(tbl, transform)
return table.concat(returnTable)
end
function p._check(args)
local title = args._base or mw.title.getCurrentTitle().fullText
local unknown = args.unknown or '[[تصنيف:صفحات تستخدم '..title ..' مع وسائط مش معروفة|_VALUE_]]' --' '--
--local preview = args.preview or "الوسيط '''_VALUE_''' مش مدعوم فى [[".. title .."]]"
local template = string.gsub(title, 'قالب:', '')
return string.format(
'<!-- النص ده كتبه اوتوماتيكى [[قالب:Parameters]] \n' ..
' -->' ..
'{{#استدعاء:Check for unknown parameters|check\n' ..
'|unknown=%s\n' ..
--'|preview =%s\n' ..
'|template =%s\n' ..
'|%s}}<!-- '..
'\n -->', unknown
-- , preview,
,template,
table.concat(extractParams(args.base), '|'))
end
function p._code(args)
local definitions = yesno(args.definitions, true)
local pad = yesno(args.pad)
local parameters = extractParams(args.base)
-- Space-pad the parameters to align the equal signs vertically
if pad then
local lengthPerPara = map(parameters, function (parameter)
return string.len(parameter) end)
-- Lua doesn't support printf's <*> to specify the width, apparently
local fs = string.format('%%-%ss', math.max(unpack(lengthPerPara)))
for i, parameter in pairs(parameters) do
parameters[i] = string.format(fs, parameter)
end
end
local title = args._base or mw.title.getCurrentTitle().baseText
return string.format([[{{%s
%s}}]], title, strMap(parameters,
function(s)
if definitions then
return string.format('| %s = %s\n', s,
DEFINITIONS[s] and DEFINITIONS[s].code or '')
else
return string.format('| %s = \n', s)
end
end))
end
function p._codeauto(args)
local definitions = yesno(args.definitions, true)
--local definitions = getpramvalue(args.definitions)
local pad = yesno(args.pad)
local parameters = extractParams(args.base)
-- Space-pad the parameters to align the equal signs vertically
if pad then
local lengthPerPara = map(parameters, function (parameter)
return string.len(parameter) end)
-- Lua doesn't support printf's <*> to specify the width, apparently
local fs = string.format('%%-%ss', math.max(unpack(lengthPerPara)))
for i, parameter in pairs(parameters) do
parameters[i] = string.format(fs, parameter)
end
end
local title = args._base or mw.title.getCurrentTitle().baseText
local dert = string.format([[{{%s
%s}}]], title, strMap(parameters,
function(s)
if definitions then
dee = string.format('| %s = %s\n', s,
DEFINITIONS[s] and DEFINITIONS[s].code or '')
else
dee = string.format('| %s = \n', s)
end
return dee
end))
if not dee or dee == '' then
return nil
else return dert end
end
function p._compare(args)
local Set = require('Module:Set')
local function normaliseParams(parameters)
local paramsNorm = {}
-- Prepare a key lookup metatable, which will hold the original
-- parameter names for each normalised parameter, e.g.
-- [test] = {TEST, Test}. paramIndex functions like a Python
-- defaultdict, where the default is a table.
local paramIndex = setmetatable({}, {__index = function(t, k)
if not rawget(t, k) then
rawset(t, k, {})
end
return rawget(t, k)
end})
for _, parameter in pairs(parameters) do
table.insert(paramsNorm,
string.lower(string.gsub(parameter, '%A', '')))
table.insert(paramIndex[
string.lower(string.gsub(parameter, '%A', ''))], parameter)
end
paramsNorm = removeDuplicates(paramsNorm)
-- Overload key lookup in paramsNorm. While [[Module:Set]] will
-- operate on the table (which is to say, the normalised parameters
-- array), key access will be by way of the paramIndex metatable.
setmetatable(paramsNorm, {__index = paramIndex})
return paramsNorm
end
local baseParams = extractParams(args.base)
local otherParams = extractParams(args.other)
local baseNormParams = normaliseParams(Set.valueComplement(
otherParams, baseParams))
local otherNormParams = normaliseParams(otherParams)
return string.format([[وسائط مطابقة:
%s
وسائط مشتركة:
%s
متفرقة بين القالبين:
%s]],
strMap(Set.valueIntersection(baseParams, otherParams),
function(v) return string.format('%s؛ ', v) end),
strMap(Set.valueIntersection(baseNormParams, otherNormParams),
function(v) return string.format('* %s < %s [%s]\n',
table.concat(baseNormParams[v], '؛ '),
table.concat(otherNormParams[v], '؛ '),
v)
end),
strMap(Set.valueComplement(otherNormParams, baseNormParams),
function(v) return strMap(baseNormParams[v],
function(s) return string.format('%s؛ ', s) end)
end))
end
function p._demo(args)
local title = args._base and ('|_template=' .. args._base) or ''
local display = args._display and ('|_display=' .. args._display) or ''
return string.format(
'<!-- النص ده كتبه اوتوماتيكى [[قالب:Parameters]] \n' ..
' -->' ..
'{{مثال وسائط قالب \n' ..
'%s\n'..
'%s\n'..
'|%s}}<!-- '..
'\n -->', title, display,
table.concat(extractParams(args.base), '|'))
end
function p._vlist(args)
return string.format(
'\n{{رأس بيانات القالب}}\n' ..
'{{div|700|70}}' ..
'\n<templatedata>\n' ..
'{\n' ..
' "params": {\n' ..
' "%s'..
'": {}\n'..
'},\n"format": "block"\n'..
'}'..
'</templatedata>\n{{div2}}',
table.concat(extractParams(args.base), '": {},\n "'))
end
function p._dlist(args)
local definitions = yesno(args.definitions, true)
return strMap(extractParams(args.base),
function(s)
if definitions then
return string.format('; %s: %s\n', s,
DEFINITIONS[s] and DEFINITIONS[s].dlist or '')
else
return string.format('; %s: \n', s)
end
end)
end
function p._list(args)
return strMap(extractParams(args.base),
function(s) return string.format('* %s\n', s) end)
end
p.check = makeInvokeFunction('_check')
p.code = makeInvokeFunction('_code')
p.codeauto = makeInvokeFunction('_codeauto')
p.compare = makeInvokeFunction('_compare')
p.demo = makeInvokeFunction('_demo')
p.dlist = makeInvokeFunction('_dlist')
p.list = makeInvokeFunction('_list')
p.vlist = makeInvokeFunction('_vlist')
return p
|
Index:
pl ar de en es fr it arz nl ja pt ceb sv uk vi war zh ru af ast az bg zh-min-nan bn be ca cs cy da et el eo eu fa gl ko hi hr id he ka la lv lt hu mk ms min no nn ce uz kk ro simple sk sl sr sh fi ta tt th tg azb tr ur zh-yue hy my ace als am an hyw ban bjn map-bms ba be-tarask bcl bpy bar bs br cv nv eml hif fo fy ga gd gu hak ha hsb io ig ilo ia ie os is jv kn ht ku ckb ky mrj lb lij li lmo mai mg ml zh-classical mr xmf mzn cdo mn nap new ne frr oc mhr or as pa pnb ps pms nds crh qu sa sah sco sq scn si sd szl su sw tl shn te bug vec vo wa wuu yi yo diq bat-smg zu lad kbd ang smn ab roa-rup frp arc gn av ay bh bi bo bxr cbk-zam co za dag ary se pdc dv dsb myv ext fur gv gag inh ki glk gan guw xal haw rw kbp pam csb kw km kv koi kg gom ks gcr lo lbe ltg lez nia ln jbo lg mt mi tw mwl mdf mnw nqo fj nah na nds-nl nrm nov om pi pag pap pfl pcd krc kaa ksh rm rue sm sat sc trv stq nso sn cu so srn kab roa-tara tet tpi to chr tum tk tyv udm ug vep fiu-vro vls wo xh zea ty ak bm ch ny ee ff got iu ik kl mad cr pih ami pwn pnt dz rmy rn sg st tn ss ti din chy ts kcg ve
Portal di Ensiklopedia Dunia