Mô đun:Parameters
Tài liệu mô đun[tạo]
-- Mô đun này thực hiện [[Bản mẫu:Parameters]].
-- [SublimeLinter luacheck-globals:mw]
local DEFINITIONS = {
alt = {
code = '<!-- văn bản thay thế cho hình ảnh; xem WP:ALT -->',
dlist = 'văn bản thay thế cho hình ảnh; xem [[WP:ALT]]'},
coordinates = {
code = '<!-- sử dụng {{Tọa độ}} -->',
dlist = 'sử dụng {{tl|Tọa độ}}'},
coords = {
code = '<!-- sử dụng {{Tọa độ}} -->',
dlist = 'sử dụng {{tl|Tọa độ}}'},
native_name = {
code = '<!-- tên trong ngôn ngữ địa phương; nếu nhiều hơn một, riêng biệt ' ..
'sử dụng {{Plainlist}} sử dụng {{lang}}, và bỏ qua native_name_lang -->',
dlist = 'tên trong ngôn ngữ địa phương; nếu nhiều hơn một, riêng biệt ' ..
'sử dụng {{tl|Plainlist}}, sử dụng {{tl|lang}}, và bỏ qua {{thông số|native_name_lang}}'},
native_name_lang = {
code = '<!-- mã ngôn ngữ hai hoặc ba ký tự ISO -->',
dlist = 'mã ngôn ngữ hai hoặc ba ký tự ISO'},
start_date = {
code = '<!-- {{Start date|YYYY|MM|DD|df=y}} -->',
dlist = 'sử dụng {{tlx|Start date|YYYY|MM|DD|df=y}}'},
end_date = {
code = '<!-- {{End date|YYYY|MM|DD|df=y}} -->',
dlist = 'sử dụng {{tlx|Start date|YYYY|MM|DD|df=y}}'},
url = {
code = '<!-- sử dụng {{URL|ví dụ.com}} -->',
dlist = 'sử dụng {{tl|URL}}'},
website = {
code = '<!-- sử dụng {{URL|ví dụ.com}} -->',
dlist = 'sử dụng {{tls|URL|ví dụ.com}}'},}
local p = {}
local removeDuplicates = require('Mô đun:TableTools').removeDuplicates
local yesno = require('Mô đun:Yesno')
local function makeInvokeFunction(funcName)
return function(frame)
local getArgs = require('Mô đun: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
return string.format(
'{{#gọi:Check for unknown parameters|check|unknown=' ..
'[[Thể loại:Trang sử dụng %s có các tham số chưa rõ]]|%s}}', title,
table.concat(extractParams(args.base), '|'))
end
function p._code(args)
local definitions = yesno(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
return string.format([[ <nowiki>{{%s
%s}}</nowiki>]], 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._flatcode(args)
local parameters = extractParams(args.base)
local title = args.base or mw.title.getCurrentTitle().baseText
return string.format(' {{tlp|%s%s}}', title, strMap(parameters,
function(s)
return string.format(' |%s{{=}}<var>%s</var>', s, s)
end)
)
end
function p._compare(args)
local Set = require('Mô đun: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 [[Mô đun: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([[Identical:
%s
Tương tự:
%s
Khác nhau:
%s]],
strMap(Set.valueIntersection(baseParams, otherParams),
function(v) return string.format('* %s\n', 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\n', s) end)
end))
end
function p._demo(args)
local title = args.base and ('|_template=' .. args.base) or ''
return string.format('{{Parameter names example%s|%s}}', title,
table.concat(extractParams(args.base), '|'))
end
function p._dlist(args)
local definitions = yesno(args.definitions, true)
local defFormat = '; %s: %s\n'
local nonDefFormat = '; %s: \n'
if args._para then
defFormat = '; {{thông số|%s}}: %s\n'
nonDefFormat = '; {{thông số|%s}}: \n'
end
return strMap(extractParams(args.base),
function(s)
if definitions then
return string.format(defFormat, s,
DEFINITIONS[s] and DEFINITIONS[s].dlist or '')
else
return string.format(nonDefFormat, s)
end
end)
end
function p._dlistpara(args)
args._para = true
return p._dlist(args)
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.flatcode = makeInvokeFunction('_flatcode')
p.compare = makeInvokeFunction('_compare')
p.demo = makeInvokeFunction('_demo')
p.dlist = makeInvokeFunction('_dlist')
p.dlistpara = makeInvokeFunction('_dlistpara')
p.list = makeInvokeFunction('_list')
return p
Wiki - Keonhacai copa chuyên cung cấp kiến thức thể thao, keonhacai tỷ lệ kèo, bóng đá, khoa học, kiến thức hằng ngày được chúng tôi cập nhật mỗi ngày mà bạn có thể tìm kiếm tại đây có nguồn bài viết: https://vi.wikipedia.org/wiki/M%C3%B4_%C4%91un:Parameters