Modulu:UKB irizpide
Itxura
Documentation for this module may be created at Modulu:UKB irizpide/dok
uk = {}
local messages = {
['or'] = 'edo',
['error_no_x_given'] = 'Ez da %s eman',
['error_no_valid_criterion_given'] = 'Ez da kriterio baliagarrik eman',
['templates'] = 'txantiloiak',
['template_criterion_singular'] = '%s txantiloia dutenak',
['template_criterion_plural'] = 'gutxienez %s txantiloietako bat dutenak',
['categories'] = 'kategoriak',
['category_criterion_singular'] = '%s kategorian',
['category_criterion_plural'] = 'hauetariko %s kategorietako batean',
['category_criterion_ignore'] = ', baina ez %s kategorian',
['backlinks'] = 'lotuta dago',
['backlink_criterion_singular'] = '%s artikulutik lotuta',
['backlink_criterion_plural'] = '%s artikuluetatik lotuta',
['forwardlinks'] = 'lotzen du',
['forwardlink_criterion_singular'] = '%s artikulura lotzen duena',
['forwardlink_criterion_plural'] = '%s artikuluetara lotzen duena',
['pages'] = 'orrialdeak',
['page_criterion_singular'] = '%s',
['page_criterion_plural'] = '%s',
['sparql_criterion'] = 'has a wikidata item matching [%s this SPARQL query]',
['sparql_criterion_with_explanation'] = '%s ([%s show SPARQL query])',
['bytes_criterion'] = 'gutxienez %s bytekin hedatua',
['namespace_criterion_singular'] = 'honako hau da %s',
['namespace_criterion_plural'] = 'honako hau da %s',
['namespace_main'] = 'artikulua',
['new_criterion'] = 'lehiaketan zehar sortua',
['new_criterion_with_redirects'] = 'lehiaketan zehar sortua (birzuzenketak barne)',
['existing_criterion'] = 'lehiaketa hasi aurretik sortua (bazeuden orrialdeak)',
['stub_criterion'] = 'zirriborro txantiloia kendu zaio',
}
local config = {
['template_link_template'] = 'Tx',
['error_message_template'] = 'Akatsa',
['arguments'] = {
['new'] = 'berria',
['existing'] = 'bazegoen',
['stub'] = 'zirriborroa',
['bytes'] = 'byte',
['namespace'] = 'izen-tartea',
['category'] = 'kategoria',
['template'] = 'txantiloia',
['backlink'] = 'lotuta dago',
['forwardlink'] = 'lotzen du',
['page'] = 'orrialdeak',
['sparql'] = 'sparql',
}
}
local category_prefix = {
['eu'] = 'eu:Kategoria',
['commons'] = 'commons:Category',
['default'] = 'Kategoria'
}
-- format_kriterium
local function format_criterion(singular, plural, items)
if #items > 1 then
return string.format(messages[singular .. '_criterion_plural'],
mw.text.listToText(items, ', ', ' ' .. messages['or'] .. ' '))
elseif #items == 1 then
return string.format(messages[singular .. '_criterion_singular'], items[1])
else
return string.format('{{%s|' .. messages['error_no_x_given'] .. '}}',
config['error_message_template'], messages[plural])
end
end
local function pagelist(args)
local r = {}
for i, v in ipairs(args) do
v = mw.text.trim(v)
if v ~= '' then
local lang, page = string.match(v, '^([a-z\]+):(.+)$')
if lang then
table.insert(r, string.format('[[:%s:%s|%s]]', lang, page, page))
else
table.insert(r, string.format('[[:%s]]', v))
end
end
end
return r
end
local function nslist(args)
local r = {}
local namespaceName = 'article'
for i, namespaceId in ipairs(args) do
namespaceId = mw.text.trim(namespaceId)
if namespaceId ~= '' then
if namespaceId ~= "0" then
namespaceName = '{{lc:{{ns:' .. namespaceId .. '}}}}'
end
table.insert(r, namespaceName)
end
end
return r
end
-- kriterium_maler
local function criterion_templates(args)
local r = {}
for i, v in ipairs(args) do
v = mw.text.trim(v)
if v ~= '' then
local m, n = string.match(v, '^([a-z\]+):(.+)$')
if m then
table.insert(r, string.format('{{%s|%s|%s}}', config['template_link_template'], n, m))
else
table.insert(r, string.format('{{%s|%s}}', config['template_link_template'], v))
end
end
end
return format_criterion('template', 'templates', r)
end
local function make_category_link(v)
local lang = 'default'
local name = v
local m, n = string.match(v, '^([a-z\]+):(.+)$')
if m then
lang = m
name = n
end
return string.format('[[:%s:%s|%s]]', category_prefix[lang], name, name)
end
-- kriterium_kategorier
local function criterion_categories(args, ignore)
local r = {}
for i, v in ipairs(args) do
v = mw.text.trim(v)
if v ~= '' then
table.insert(r, make_category_link(v))
end
end
local msg = format_criterion('category', 'categories', r)
ignore = ignore:expand()
if ignore ~= nil and mw.text.trim(ignore) ~= '' then
r = mw.text.split(ignore, ',')
for i, v in ipairs(r) do
v = mw.text.trim(v)
r[i] = make_category_link(v)
end
msg = msg .. string.format(messages['category_criterion_ignore'], mw.text.listToText(r, ', ', ' ' .. messages['or'] .. ' '))
end
return msg
end
-- kriterium_tilbakelenke
local function criterion_backlinks(args)
return format_criterion('backlink', 'backlinks', pagelist(args))
end
-- kriterium_fremlenke
local function criterion_forwardlinks(args)
return format_criterion('forwardlink', 'forwardlinks', pagelist(args))
end
-- kriterium_enkeltsider
local function criterion_pages(args)
return format_criterion('page', 'pages', pagelist(args))
end
-- kriterium_sparql
local function criterion_sparql(frame, query, explanation)
query = 'SELECT ?item WHERE {\n ' .. query .. '\n}'
local url = 'http://query.wikidata.org/#' .. frame:callParserFunction('urlencode', { query, 'PATH' })
if explanation ~= nil then
return string.format(messages['sparql_criterion_with_explanation'], explanation, url)
else
return string.format(messages['sparql_criterion'], url)
end
end
-- kriterium_bytes
local function criterion_bytes(args)
return string.format(messages['bytes_criterion'], args[1])
end
-- kriterium_navnerom
local function criterion_namespaces(args, site)
site = site:expand()
local msg = format_criterion('namespace', 'namespaces', nslist(args, site))
if site ~= nil then
site = mw.text.trim(site)
if site ~= '' then
return string.format('%s at [https://%s %s]', msg, site, site)
end
end
return msg
end
-- kriterium_ny
local function criterion_new(redirects)
redirects = redirects:expand()
local msg = messages['new_criterion']
if redirects ~= nil and mw.text.trim(redirects) ~= '' then
msg = messages['new_criterion_with_redirects']
end
return msg
end
--kriterium
function uk.criterion(frame)
local description = frame:getArgument('description'):expand()
if description ~= nil and mw.text.trim(description) ~= '' then
if frame.args.criterion == 'sparql' then
return criterion_sparql(frame, frame:getArgument('query'):expand(), description)
else
return description
end
end
local t = {
[config['arguments']['new']] = function(args) return criterion_new(frame:getArgument('redirects')) end,
[config['arguments']['existing']] = messages['existing_criterion'],
[config['arguments']['stub']] = messages['stub_criterion'],
[config['arguments']['bytes']] = function(args) return criterion_bytes(args) end,
[config['arguments']['namespace']] = function(args) return criterion_namespaces(args, frame:getArgument('site')) end,
[config['arguments']['template']] = function(args) return criterion_templates(args) end,
[config['arguments']['category']] = function(args) return criterion_categories(args, frame:getArgument('ignore')) end,
[config['arguments']['backlink']] = function(args) return criterion_backlinks(args) end,
[config['arguments']['forwardlink']] = function(args) return criterion_forwardlinks(args) end,
[config['arguments']['page']] = function(args) return criterion_pages(args) end,
[config['arguments']['sparql']] = function(args) return criterion_sparql(frame, frame:getArgument('query'):expand()) end,
}
local args = {}
for i, v in ipairs(frame.args) do
if tonumber(i) ~= nil then
args[i] = v
end
end
local k = frame.args.criterion
local s = type(t[k]) == "function" and t[k](args) or t[k] or string.format('{{%s|%s}}', config['error_message_template'], messages['error_no_valid_criterion_given'])
return frame:preprocess(s)
end
return uk