„Modul:Infobox” változatai közötti eltérés
Megjelenés
merge hlist here |
népesség csak az utolsó |
||
1. sor: | 1. sor: | ||
require('strict') | |||
local getArgs = require"Modul:Arguments".getArgs | |||
local p = {} | local p = {} | ||
p.row = function (args) | |||
args = getArgs(args) | |||
local val, label, group, undertag | |||
val = args[1] | |||
if not val then | |||
return nil | |||
end | end | ||
if args[3] then | |||
label = '[[' .. args[3] .. '|' .. args[2] .. ']]' | |||
if | |||
else | else | ||
label = args[2] | |||
end | end | ||
group = args['csoportazonosító'] | |||
undertag = not (not args['címke alatt']) | |||
- | local row = mw.html.create('tr') | ||
local | if group then | ||
row:addClass( 'csoport-' .. tostring(group) ) | |||
if | end | ||
local labeltag = row:tag('td') | |||
labeltag:addClass(undertag and 'cimkealatt' or 'cimke') | |||
if not undertag then | |||
labeltag:css('font-weight', 'bolder') | |||
end | end | ||
labeltag:wikitext(label) | |||
labeltag:done() | |||
local valtag = row:tag('td') | |||
valtag:wikitext(val) | |||
valtag:done() | |||
return tostring(row) | |||
end | end | ||
p['adat allapról'] = function (frame) | |||
local args = getArgs(frame, { wrappers = 'Sablon:Infobox/Adat allapról' }) | |||
if not args[1] or not args[2] then | |||
local | return nil | ||
end | end | ||
local value | |||
if mw.language.getContentLanguage():lc(args[1]) == 'népesség' and args[2] == mw.title.getCurrentTitle().text then | |||
value = require('Modul:Wikidata').formatStatements(nil, { property = 'P1082', format = 'default', sort = 'P585', sortDesc = '1', first = '1' }) | |||
end | end | ||
local | if not value or value == '' then | ||
local title = mw.title.new('Sablon:' .. args[1] .. '/' .. args[2]) | |||
if title and title.exists then | |||
value = mw.getCurrentFrame():expandTemplate{ title = title.text .. (args[3] and ' (' .. args[3] .. ')' or '') } | |||
else | |||
value = mw.getCurrentFrame():expandTemplate{ title = args[1] .. '/ismeretlen', args = { args[2] } } | |||
end | |||
end | end | ||
return | return string.format('<tr style="vertical-align:top;"><td style="font-weight:bold;">%s</td><td>%s</td></tr>', args[4] or '', value) | ||
end | end | ||
p["ország"] = function (frame) | |||
local args = getArgs(frame, { wrappers = "Sablon:Infobox/Ország" }) | |||
if args[1] == "-" then | |||
return nil | |||
local | |||
end | end | ||
local cdata = require('Modul:Country data').main | |||
return | return p.row{ | ||
cdata{ [1] = args[1], ['size'] = args[4] }, | |||
'Ország' | |||
} | |||
end | end | ||
p.image = function (filename, legend, property, entityId) | |||
if filename == '-' then | |||
return nil, nil | |||
end | |||
if | if (not filename) and property then | ||
local item = mw.wikibase.getEntity(entityId) | |||
if not item then | |||
return nil, nil | |||
if | |||
end | end | ||
local image = item:getBestStatements(string.upper(property))[1] | |||
if image and image.mainsnak.snaktype == 'value' then | |||
filename = image.mainsnak.datavalue.value | |||
legend = nil | |||
if image.qualifiers and image.qualifiers.P2096 then | |||
for _, snak in ipairs(image.qualifiers.P2096) do | |||
if snak.snaktype == 'value' then | |||
if snak.datavalue.value.language == 'hu' then | |||
legend = snak.datavalue.value.text | |||
end | |||
end | |||
end | |||
end | |||
else | |||
return nil, nil | |||
end | end | ||
end | end | ||
return filename, legend | |||
end | end | ||
p["kép"] = function (frame) | |||
local args = getArgs(frame, {wrappers = "Sablon:Infobox/Kép"}) | |||
local filename, legend = p.image(args[1], args[3], args["wd-property"], args["wd-entity"]) | |||
if not filename then | |||
return nil | |||
end | |||
local filesize = args[2] | |||
if not filesize then | |||
local title = mw.title.new('Media:' .. filename) | |||
if ( | |||
title and title.file.width and title.file.width < 250 | |||
and title.file.mimeType ~= 'image/svg' and title.file.mimeType ~= 'image/svg+xml' | |||
) then | |||
filesize = title.file.width | |||
end | else | ||
filesize = 250 | |||
local | end | ||
if not | filesize = tostring(filesize) .. 'px' | ||
end | |||
local link = "[[Fájl:" .. filename .. "|" .. filesize | |||
if legend then | |||
link = link .. "|" .. legend | |||
end | |||
link = link .. "]]" | |||
local result = tostring(mw.html.create"tr" | |||
:tag"td" | |||
:attr("colspan", "2") | |||
:css("text-align", "center") | |||
:wikitext(link) | |||
:allDone() | |||
) | |||
end | if legend then | ||
result = result .. tostring(mw.html.create"tr" | |||
local | :tag"td" | ||
if | :attr("colspan", "2") | ||
:css("text-align", "center") | |||
:css("font-size", "92%") | |||
:wikitext(legend) | |||
:allDone() | |||
) | |||
if | |||
:attr( | |||
: | |||
: | |||
: | |||
: | |||
end | end | ||
return result | |||
end | end | ||
local function | local function getWikidataCoord(entityId) | ||
if | local item = mw.wikibase.getEntity(entityId) | ||
if not item then | |||
return nil, nil | |||
end | end | ||
if | local P625 = item:getBestStatements('P625') | ||
for _, v in ipairs(P625) do | |||
if v.mainsnak.snaktype == 'value' then | |||
local lat = P625[1].mainsnak.datavalue.value.latitude | |||
local long = P625[1].mainsnak.datavalue.value.longitude | |||
return lat, long | |||
end | |||
end | end | ||
local | local P159 = item:getBestStatements('P159') | ||
for | for _, v in ipairs(P159) do | ||
if v.qualifiers and v.qualifiers.P625 and v.qualifiers.P625[1].snaktype == 'value' then | |||
local lat = v.qualifiers.P625[1].datavalue.value.latitude | |||
local long = v.qualifiers.P625[1].datavalue.value.longitude | |||
return lat, long | |||
end | |||
end | end | ||
return nil, nil | |||
end | end | ||
local function | local function coordRow(coordinatesLink) | ||
return '<tr><td colspan="2" style="text-align:center">[[Fájl:OOjs UI icon mapPin-progressive.svg|16px|link=]] ' .. coordinatesLink .. '</td></tr>' | |||
end | |||
--[[ | |||
Helyi értékű paramétereket átalakítja szám szerinti paraméterekké. | |||
Modul:Pozíciós térkép-ből is. | |||
--]] | |||
function p.coord(frame, args) | |||
local coorArgs = {args[9], display = args.display, format = 'dms', with_pfunc = true} | |||
if args[1] and args[5] then | |||
local hemisphereMultipliers = { | |||
longitude = { W = -1, w = -1, E = 1, e = 1, NY = -1, Ny = -1, ny = -1, K = 1, k = 1 }, | |||
latitude = { S = -1, s = -1, N = 1, n = 1, D = -1, d = -1, ['É'] = 1, ['é'] = 1 } | |||
} | |||
table.insert(coorArgs, 1, hemisphereMultipliers.latitude[args[4]] and args[4] or 'N') | |||
table.insert(coorArgs, 2, hemisphereMultipliers.longitude[args[8]] and args[8] or 'E') | |||
table.insert(coorArgs, 1, args[1]) | |||
table.insert(coorArgs, 3, args[5]) | |||
if args[2] and args[6] then | |||
table.insert(coorArgs, 2, args[2]) | |||
table.insert(coorArgs, 5, args[6]) | |||
if args[3] and args[7] then | |||
table.insert(coorArgs, 3, args[3]) | |||
table.insert(coorArgs, 7, args[7]) | |||
end | |||
else | |||
if not args[4] or not args[8] then | |||
table.remove(coorArgs, 4) | |||
table.remove(coorArgs, 2) | |||
end | |||
end | |||
elseif args.lat and args.long then | |||
table.insert(coorArgs, 1, args.lat) | |||
table.insert(coorArgs, 2, args.long) | |||
coorArgs.precision = 'wikidata' | |||
else | else | ||
return nil | |||
end | end | ||
return require( 'Modul:Coordinate' ).coord( nil, coorArgs ) | |||
end | end | ||
local | p["pozíciós térkép"] = function (frame) | ||
if args | local args = getArgs(frame, {wrappers = "Sablon:Infobox/Pozíciós térkép"}) | ||
if args[4] == '-' or args[8] == '-' then | |||
return nil | |||
end | end | ||
if args | local mapArgs = { | ||
args. | args[1], | ||
['felirat'] = "'''" .. (args[2] ~= '{{{név}}}' and args[2] or require'Modul:String'.simpletitle{args = {}}) .. "'''", | |||
['keret'] = 'none', | |||
['felirat pozíciója'] = args[3], | |||
['jel'] = args.jel or 'Green pog.svg', | |||
['felirat mérete'] = '100', | |||
['méret'] = '248', | |||
['igazítás'] = 'none', | |||
['térképtípus'] = args['térképtípus'], | |||
['meta'] = args.meta, | |||
['jel mérete'] = args['jel mérete'] | |||
} | |||
if args[4] and args[8] then | |||
mapArgs['szélesség'] = args[7] | |||
mapArgs['hosszúság'] = args[11] | |||
mapArgs['szélességi fok'] = args[4] | |||
mapArgs['hosszúsági fok'] = args[8] | |||
if args[5] and args[9] then | |||
mapArgs['szélességi ívperc'] = args[5] | |||
mapArgs['hosszúsági ívperc'] = args[9] | |||
if args[6] and args[10] then | |||
mapArgs['szélességi ívmásodperc'] = args[6] | |||
mapArgs['hosszúsági ívmásodperc'] = args[10] | |||
end | |||
end | |||
else | |||
mapArgs.lat, mapArgs.long = getWikidataCoord(args['wd-entity']) | |||
if not mapArgs.lat or not mapArgs.long then | |||
return nil | |||
end | |||
end | end | ||
local | local result = {} | ||
local trackWikidata = false | |||
if not args[1] then | |||
if not args['koordinátakategória nélkül'] then | |||
table.insert(result, '[[Kategória:Koordináták térkép nélkül]]') | |||
end | end | ||
elseif args[1] ~= '-' then | |||
local title = mw.title.new('Sablon:Pozíciós térkép ' .. args[1]) | |||
if title and mw.ustring.sub(args[1], -9) == ' vármegye' and not title.exists then | |||
mapArgs[1] = mw.ustring.gsub(args[1], ' vármegye$', ' megye') | |||
title = mw.title.new('Sablon:Pozíciós térkép ' .. mapArgs[1]) | |||
end | |||
if title and title.exists then | |||
local success, map = pcall(require'Modul:Pozíciós térkép'.many, frame, mapArgs) | |||
if not success then | |||
map = '<strong class="error">' .. map .. '</strong>[[Kategória:Hibásan használt pozícióstérkép-sablonok]]' | |||
else | |||
trackWikidata = true | |||
local | |||
if | |||
end | end | ||
table.insert(result, '<tr><td colspan="2" align="center">' .. map .. '</td></tr>\n') | |||
else | |||
table.insert(result, '[[Kategória:Pozíciós térképet hiányoló lapok]]') | |||
end | end | ||
end | end | ||
if args['koordináta a térkép alatt'] then | |||
table.insert(result, coordRow(p.coord(frame, {args[4], args[5], args[6], args[7], | |||
args[8], args[9], args[10], args[11], args.meta, display = args['koordináta a cím alatt'] and 'inline,title', | |||
lat = mapArgs.lat, long = mapArgs.long}))) | |||
trackWikidata = true | |||
elseif args['koordináta a cím alatt'] then | |||
table.insert(result, p.coord(frame, {args[4], args[5], args[6], args[7], | |||
args[8], args[9], args[10], args[11], args.meta, display = 'title', | |||
lat = mapArgs.lat, long = mapArgs.long})) | |||
trackWikidata = true | |||
end | end | ||
-- Nincs rá szükség | |||
--if trackWikidata and mapArgs.lat then | |||
-- table.insert(result, '[[Kategória:Wikidata-koordinátákat használó lapok]]') | |||
--end | |||
return table.concat(result) | |||
end | end | ||
p["koordináta"] = function (frame) | |||
local | local args = getArgs(frame, {wrappers = "Sablon:Infobox/Koordináta"}) | ||
if | if args[1] == '-' or args[5] == '-' then | ||
return nil | |||
end | end | ||
if not args[1] or not args[5] then | |||
args.lat, args.long = getWikidataCoord(args['wd-entity']) | |||
if not args.lat or not args.long then | |||
return nil | |||
end | end | ||
end | end | ||
return coordRow(p.coord(frame, args)) | |||
end | end | ||
function p.terkep(frame) | |||
local args = getArgs(frame, { wrappers='Sablon:Infobox/Térkép' }) | |||
if args.mapframe == 'no' or args.map == '-' then | |||
return nil | |||
local | |||
if | |||
end | end | ||
local itemId = mw.wikibase.getEntityIdForCurrentPage() or args.entityId | |||
local | local cst = itemId and mw.wikibase.getBestStatements(itemId, 'P625') or {} | ||
if not args.coord and not next(cst) then | |||
return nil | |||
local | |||
if args | |||
end | end | ||
if next(cst) and cst[1].mainsnak.datavalue.value.latitude <= -60 then -- southern arctic | |||
frame.args[1] = args.map | |||
if | return p['pozíciós térkép'](frame) | ||
end | end | ||
return ('<tr><td colspan="2" style="text-align:center">%s</td></tr>') | |||
return | :format(require('Modul:Pozíciós térkép').infoboxMapframe(frame)) | ||
end | end | ||
function p.tarsprojekt(frame) | |||
local args = getArgs(frame, { wrappers='Sablon:Infobox/Társprojekt' }) | |||
if not args[1] then | |||
return nil | |||
end | |||
local title = args[2] | |||
if title == '-' then | |||
return nil | |||
if args | |||
end | end | ||
local siteGroup, prefix, lang, imageFile | |||
if args[1]:match('^[Cc]ommons$') then | |||
siteGroup = 'commonswiki' | |||
prefix = 'c:' | |||
imageFile = 'Commons-logo.svg' | |||
elseif args[1]:match('^[Ww]ikiforrás$') then | |||
- | siteGroup = 'wikisource' | ||
prefix = 's:' | |||
imageFile = 'Wikisource-logo.svg' | |||
end | end | ||
if not siteGroup then | |||
return nil | |||
if | |||
end | end | ||
if | if siteGroup:sub(1, 4) == 'wiki' then | ||
lang = args[3] or 'hu' | |||
end | end | ||
if not title then | |||
local itemId = args[6] or mw.wikibase.getEntityIdForCurrentPage() | |||
if not itemId then | |||
return nil | |||
end | end | ||
title = mw.wikibase.getSitelink(itemId, (lang or '') .. siteGroup) | |||
if siteGroup == 'commonswiki' then | |||
if not title or title:sub(1, 9) ~= 'Category:' then | |||
local st = mw.wikibase.getBestStatements(itemId, 'P373') | |||
if next(st) and st[1].mainsnak.snaktype == 'value' then | |||
if | title = 'Category:' .. st[1].mainsnak.datavalue.value | ||
end | end | ||
end | end | ||
end | end | ||
if not title then | |||
return nil | |||
end | |||
end | |||
local text = '<strong class="error">Modul:Infobox: Nincs megadva szöveg</strong>' | |||
if siteGroup == 'commonswiki' then | |||
text = "A [[Wikimédia Commons]] tartalmaz ''[[%s]]'' témájú médiaállományokat." | |||
elseif siteGroup == 'wikisource' then | |||
text = (lang == 'hu' and 'A' or frame:preprocess(('{{NAGYKEZDŐBETŰ:{{a(z)|{{nyelv neve/%s}}}}}}'):format(lang))) .. | |||
" [[Wikiforrás]]ban további forrásszövegek találhatók ''[[%s]]'' témában." | |||
end | end | ||
local label = args[4] or require('Modul:String').simpletitle() | |||
text = text:format(('%s%s%s|%s'):format(prefix, lang and lang ~= 'hu' and lang .. ':' or '', title, label)) | |||
return ('<tr><td colspan="2" style="background-color:%s"><div style="display:flex"><div>[[Fájl:%s|20px|link=|alt=]]</div><div style="width:100%%; padding-left:1ch; text-align:center">%s</div></div></td></tr>') | |||
:format(args[5] or '#e4ebf3', imageFile, text) | |||
end | |||
--[[ | |||
Sablon:Repülőtér infobox futópálya P529 | |||
local | ]] | ||
function p.repuloter_futopalya(frame) | |||
local args = getArgs(frame, { frameOnly = true }) | |||
if args[1] then | |||
return nil | |||
end | |||
if args[2] == '-' then | |||
return nil | |||
end | |||
local itemId = mw.wikibase.getEntityIdForCurrentPage() | |||
if not itemId then | |||
return nil | |||
end | |||
local ret = {} | |||
local f = require'Modul:Wikidata'.formatters | |||
local options = { link = 'nem', unit = 'm', showUnit = true, conjunction = ', ' } | |||
for _, s in ipairs(mw.wikibase.getBestStatements(itemId, 'P529')) do | |||
local material = {} | |||
for _, q in ipairs(s.qualifiers and s.qualifiers.P186 or {}) do | |||
table.insert(material, mw.wikibase.renderSnak(q)) | |||
end | end | ||
table.insert(ret, '<tr><td>' .. mw.wikibase.renderSnak(s.mainsnak) .. | |||
'</td><td>' .. f.formatSnaks(s.qualifiers and s.qualifiers.P2043 or {}, options) .. | |||
'</td><td>' .. table.concat(material, ', ') .. | |||
'</td></tr>') | |||
end | end | ||
return table.concat(ret) | |||
end | end | ||
-- | --[[ | ||
Sablon:Világörökségi helyszín infobox/veszélyeztetettség/P793 | |||
]] | |||
function p.vor_veszelyeztetettseg(frame) | |||
local args = getArgs(frame, { frameOnly = true }) | |||
if args[1] == '-' then | |||
return nil | |||
end | |||
if args[1] then | |||
return args[1] | |||
end | |||
local itemId = mw.wikibase.getEntityIdForCurrentPage() | |||
if not itemId then | |||
return nil | |||
end | |||
local ret = {} | |||
for _, s in ipairs(mw.wikibase.getBestStatements(itemId, 'P793')) do | |||
local startTime, endTime | |||
if s.mainsnak.datavalue.value.id == 'Q222384' and s.qualifiers then | |||
startTime = s.qualifiers.P580 and mw.wikibase.renderSnak(s.qualifiers.P580[1]) or nil | |||
endTime = s.qualifiers.P582 and mw.wikibase.renderSnak(s.qualifiers.P582[1]) or nil | |||
end | |||
if startTime or endTime then | |||
table.insert(ret, (startTime or '') .. '–' .. (endTime or '')) | |||
end | |||
end | |||
return table.concat(ret, '<br>') | |||
end | end | ||
-- | --[[ | ||
-- | Sablon:Stw | ||
function p. | --]] | ||
function p.newline_for_wikitext(frame) | |||
local text = frame.args[1] | |||
if not text or text:match('^%s*(.-)%s*$') == '' then | |||
return nil | |||
end | |||
if mw.ustring.find('*#: ', mw.ustring.sub(text, 1, 1), 1, true) or mw.ustring.sub(text, 1, 2) == '{|' then | |||
return '\n' | |||
end | end | ||
return nil | |||
return | |||
end | end | ||
return p | return p |
A lap 2024. szeptember 6., 17:52-kori változata
A modult a Modul:Infobox/doc lapon tudod dokumentálni
require('strict')
local getArgs = require"Modul:Arguments".getArgs
local p = {}
p.row = function (args)
args = getArgs(args)
local val, label, group, undertag
val = args[1]
if not val then
return nil
end
if args[3] then
label = '[[' .. args[3] .. '|' .. args[2] .. ']]'
else
label = args[2]
end
group = args['csoportazonosító']
undertag = not (not args['címke alatt'])
local row = mw.html.create('tr')
if group then
row:addClass( 'csoport-' .. tostring(group) )
end
local labeltag = row:tag('td')
labeltag:addClass(undertag and 'cimkealatt' or 'cimke')
if not undertag then
labeltag:css('font-weight', 'bolder')
end
labeltag:wikitext(label)
labeltag:done()
local valtag = row:tag('td')
valtag:wikitext(val)
valtag:done()
return tostring(row)
end
p['adat allapról'] = function (frame)
local args = getArgs(frame, { wrappers = 'Sablon:Infobox/Adat allapról' })
if not args[1] or not args[2] then
return nil
end
local value
if mw.language.getContentLanguage():lc(args[1]) == 'népesség' and args[2] == mw.title.getCurrentTitle().text then
value = require('Modul:Wikidata').formatStatements(nil, { property = 'P1082', format = 'default', sort = 'P585', sortDesc = '1', first = '1' })
end
if not value or value == '' then
local title = mw.title.new('Sablon:' .. args[1] .. '/' .. args[2])
if title and title.exists then
value = mw.getCurrentFrame():expandTemplate{ title = title.text .. (args[3] and ' (' .. args[3] .. ')' or '') }
else
value = mw.getCurrentFrame():expandTemplate{ title = args[1] .. '/ismeretlen', args = { args[2] } }
end
end
return string.format('<tr style="vertical-align:top;"><td style="font-weight:bold;">%s</td><td>%s</td></tr>', args[4] or '', value)
end
p["ország"] = function (frame)
local args = getArgs(frame, { wrappers = "Sablon:Infobox/Ország" })
if args[1] == "-" then
return nil
end
local cdata = require('Modul:Country data').main
return p.row{
cdata{ [1] = args[1], ['size'] = args[4] },
'Ország'
}
end
p.image = function (filename, legend, property, entityId)
if filename == '-' then
return nil, nil
end
if (not filename) and property then
local item = mw.wikibase.getEntity(entityId)
if not item then
return nil, nil
end
local image = item:getBestStatements(string.upper(property))[1]
if image and image.mainsnak.snaktype == 'value' then
filename = image.mainsnak.datavalue.value
legend = nil
if image.qualifiers and image.qualifiers.P2096 then
for _, snak in ipairs(image.qualifiers.P2096) do
if snak.snaktype == 'value' then
if snak.datavalue.value.language == 'hu' then
legend = snak.datavalue.value.text
end
end
end
end
else
return nil, nil
end
end
return filename, legend
end
p["kép"] = function (frame)
local args = getArgs(frame, {wrappers = "Sablon:Infobox/Kép"})
local filename, legend = p.image(args[1], args[3], args["wd-property"], args["wd-entity"])
if not filename then
return nil
end
local filesize = args[2]
if not filesize then
local title = mw.title.new('Media:' .. filename)
if (
title and title.file.width and title.file.width < 250
and title.file.mimeType ~= 'image/svg' and title.file.mimeType ~= 'image/svg+xml'
) then
filesize = title.file.width
else
filesize = 250
end
filesize = tostring(filesize) .. 'px'
end
local link = "[[Fájl:" .. filename .. "|" .. filesize
if legend then
link = link .. "|" .. legend
end
link = link .. "]]"
local result = tostring(mw.html.create"tr"
:tag"td"
:attr("colspan", "2")
:css("text-align", "center")
:wikitext(link)
:allDone()
)
if legend then
result = result .. tostring(mw.html.create"tr"
:tag"td"
:attr("colspan", "2")
:css("text-align", "center")
:css("font-size", "92%")
:wikitext(legend)
:allDone()
)
end
return result
end
local function getWikidataCoord(entityId)
local item = mw.wikibase.getEntity(entityId)
if not item then
return nil, nil
end
local P625 = item:getBestStatements('P625')
for _, v in ipairs(P625) do
if v.mainsnak.snaktype == 'value' then
local lat = P625[1].mainsnak.datavalue.value.latitude
local long = P625[1].mainsnak.datavalue.value.longitude
return lat, long
end
end
local P159 = item:getBestStatements('P159')
for _, v in ipairs(P159) do
if v.qualifiers and v.qualifiers.P625 and v.qualifiers.P625[1].snaktype == 'value' then
local lat = v.qualifiers.P625[1].datavalue.value.latitude
local long = v.qualifiers.P625[1].datavalue.value.longitude
return lat, long
end
end
return nil, nil
end
local function coordRow(coordinatesLink)
return '<tr><td colspan="2" style="text-align:center">[[Fájl:OOjs UI icon mapPin-progressive.svg|16px|link=]] ' .. coordinatesLink .. '</td></tr>'
end
--[[
Helyi értékű paramétereket átalakítja szám szerinti paraméterekké.
Modul:Pozíciós térkép-ből is.
--]]
function p.coord(frame, args)
local coorArgs = {args[9], display = args.display, format = 'dms', with_pfunc = true}
if args[1] and args[5] then
local hemisphereMultipliers = {
longitude = { W = -1, w = -1, E = 1, e = 1, NY = -1, Ny = -1, ny = -1, K = 1, k = 1 },
latitude = { S = -1, s = -1, N = 1, n = 1, D = -1, d = -1, ['É'] = 1, ['é'] = 1 }
}
table.insert(coorArgs, 1, hemisphereMultipliers.latitude[args[4]] and args[4] or 'N')
table.insert(coorArgs, 2, hemisphereMultipliers.longitude[args[8]] and args[8] or 'E')
table.insert(coorArgs, 1, args[1])
table.insert(coorArgs, 3, args[5])
if args[2] and args[6] then
table.insert(coorArgs, 2, args[2])
table.insert(coorArgs, 5, args[6])
if args[3] and args[7] then
table.insert(coorArgs, 3, args[3])
table.insert(coorArgs, 7, args[7])
end
else
if not args[4] or not args[8] then
table.remove(coorArgs, 4)
table.remove(coorArgs, 2)
end
end
elseif args.lat and args.long then
table.insert(coorArgs, 1, args.lat)
table.insert(coorArgs, 2, args.long)
coorArgs.precision = 'wikidata'
else
return nil
end
return require( 'Modul:Coordinate' ).coord( nil, coorArgs )
end
p["pozíciós térkép"] = function (frame)
local args = getArgs(frame, {wrappers = "Sablon:Infobox/Pozíciós térkép"})
if args[4] == '-' or args[8] == '-' then
return nil
end
local mapArgs = {
args[1],
['felirat'] = "'''" .. (args[2] ~= '{{{név}}}' and args[2] or require'Modul:String'.simpletitle{args = {}}) .. "'''",
['keret'] = 'none',
['felirat pozíciója'] = args[3],
['jel'] = args.jel or 'Green pog.svg',
['felirat mérete'] = '100',
['méret'] = '248',
['igazítás'] = 'none',
['térképtípus'] = args['térképtípus'],
['meta'] = args.meta,
['jel mérete'] = args['jel mérete']
}
if args[4] and args[8] then
mapArgs['szélesség'] = args[7]
mapArgs['hosszúság'] = args[11]
mapArgs['szélességi fok'] = args[4]
mapArgs['hosszúsági fok'] = args[8]
if args[5] and args[9] then
mapArgs['szélességi ívperc'] = args[5]
mapArgs['hosszúsági ívperc'] = args[9]
if args[6] and args[10] then
mapArgs['szélességi ívmásodperc'] = args[6]
mapArgs['hosszúsági ívmásodperc'] = args[10]
end
end
else
mapArgs.lat, mapArgs.long = getWikidataCoord(args['wd-entity'])
if not mapArgs.lat or not mapArgs.long then
return nil
end
end
local result = {}
local trackWikidata = false
if not args[1] then
if not args['koordinátakategória nélkül'] then
table.insert(result, '[[Kategória:Koordináták térkép nélkül]]')
end
elseif args[1] ~= '-' then
local title = mw.title.new('Sablon:Pozíciós térkép ' .. args[1])
if title and mw.ustring.sub(args[1], -9) == ' vármegye' and not title.exists then
mapArgs[1] = mw.ustring.gsub(args[1], ' vármegye$', ' megye')
title = mw.title.new('Sablon:Pozíciós térkép ' .. mapArgs[1])
end
if title and title.exists then
local success, map = pcall(require'Modul:Pozíciós térkép'.many, frame, mapArgs)
if not success then
map = '<strong class="error">' .. map .. '</strong>[[Kategória:Hibásan használt pozícióstérkép-sablonok]]'
else
trackWikidata = true
end
table.insert(result, '<tr><td colspan="2" align="center">' .. map .. '</td></tr>\n')
else
table.insert(result, '[[Kategória:Pozíciós térképet hiányoló lapok]]')
end
end
if args['koordináta a térkép alatt'] then
table.insert(result, coordRow(p.coord(frame, {args[4], args[5], args[6], args[7],
args[8], args[9], args[10], args[11], args.meta, display = args['koordináta a cím alatt'] and 'inline,title',
lat = mapArgs.lat, long = mapArgs.long})))
trackWikidata = true
elseif args['koordináta a cím alatt'] then
table.insert(result, p.coord(frame, {args[4], args[5], args[6], args[7],
args[8], args[9], args[10], args[11], args.meta, display = 'title',
lat = mapArgs.lat, long = mapArgs.long}))
trackWikidata = true
end
-- Nincs rá szükség
--if trackWikidata and mapArgs.lat then
-- table.insert(result, '[[Kategória:Wikidata-koordinátákat használó lapok]]')
--end
return table.concat(result)
end
p["koordináta"] = function (frame)
local args = getArgs(frame, {wrappers = "Sablon:Infobox/Koordináta"})
if args[1] == '-' or args[5] == '-' then
return nil
end
if not args[1] or not args[5] then
args.lat, args.long = getWikidataCoord(args['wd-entity'])
if not args.lat or not args.long then
return nil
end
end
return coordRow(p.coord(frame, args))
end
function p.terkep(frame)
local args = getArgs(frame, { wrappers='Sablon:Infobox/Térkép' })
if args.mapframe == 'no' or args.map == '-' then
return nil
end
local itemId = mw.wikibase.getEntityIdForCurrentPage() or args.entityId
local cst = itemId and mw.wikibase.getBestStatements(itemId, 'P625') or {}
if not args.coord and not next(cst) then
return nil
end
if next(cst) and cst[1].mainsnak.datavalue.value.latitude <= -60 then -- southern arctic
frame.args[1] = args.map
return p['pozíciós térkép'](frame)
end
return ('<tr><td colspan="2" style="text-align:center">%s</td></tr>')
:format(require('Modul:Pozíciós térkép').infoboxMapframe(frame))
end
function p.tarsprojekt(frame)
local args = getArgs(frame, { wrappers='Sablon:Infobox/Társprojekt' })
if not args[1] then
return nil
end
local title = args[2]
if title == '-' then
return nil
end
local siteGroup, prefix, lang, imageFile
if args[1]:match('^[Cc]ommons$') then
siteGroup = 'commonswiki'
prefix = 'c:'
imageFile = 'Commons-logo.svg'
elseif args[1]:match('^[Ww]ikiforrás$') then
siteGroup = 'wikisource'
prefix = 's:'
imageFile = 'Wikisource-logo.svg'
end
if not siteGroup then
return nil
end
if siteGroup:sub(1, 4) == 'wiki' then
lang = args[3] or 'hu'
end
if not title then
local itemId = args[6] or mw.wikibase.getEntityIdForCurrentPage()
if not itemId then
return nil
end
title = mw.wikibase.getSitelink(itemId, (lang or '') .. siteGroup)
if siteGroup == 'commonswiki' then
if not title or title:sub(1, 9) ~= 'Category:' then
local st = mw.wikibase.getBestStatements(itemId, 'P373')
if next(st) and st[1].mainsnak.snaktype == 'value' then
title = 'Category:' .. st[1].mainsnak.datavalue.value
end
end
end
if not title then
return nil
end
end
local text = '<strong class="error">Modul:Infobox: Nincs megadva szöveg</strong>'
if siteGroup == 'commonswiki' then
text = "A [[Wikimédia Commons]] tartalmaz ''[[%s]]'' témájú médiaállományokat."
elseif siteGroup == 'wikisource' then
text = (lang == 'hu' and 'A' or frame:preprocess(('{{NAGYKEZDŐBETŰ:{{a(z)|{{nyelv neve/%s}}}}}}'):format(lang))) ..
" [[Wikiforrás]]ban további forrásszövegek találhatók ''[[%s]]'' témában."
end
local label = args[4] or require('Modul:String').simpletitle()
text = text:format(('%s%s%s|%s'):format(prefix, lang and lang ~= 'hu' and lang .. ':' or '', title, label))
return ('<tr><td colspan="2" style="background-color:%s"><div style="display:flex"><div>[[Fájl:%s|20px|link=|alt=]]</div><div style="width:100%%; padding-left:1ch; text-align:center">%s</div></div></td></tr>')
:format(args[5] or '#e4ebf3', imageFile, text)
end
--[[
Sablon:Repülőtér infobox futópálya P529
]]
function p.repuloter_futopalya(frame)
local args = getArgs(frame, { frameOnly = true })
if args[1] then
return nil
end
if args[2] == '-' then
return nil
end
local itemId = mw.wikibase.getEntityIdForCurrentPage()
if not itemId then
return nil
end
local ret = {}
local f = require'Modul:Wikidata'.formatters
local options = { link = 'nem', unit = 'm', showUnit = true, conjunction = ', ' }
for _, s in ipairs(mw.wikibase.getBestStatements(itemId, 'P529')) do
local material = {}
for _, q in ipairs(s.qualifiers and s.qualifiers.P186 or {}) do
table.insert(material, mw.wikibase.renderSnak(q))
end
table.insert(ret, '<tr><td>' .. mw.wikibase.renderSnak(s.mainsnak) ..
'</td><td>' .. f.formatSnaks(s.qualifiers and s.qualifiers.P2043 or {}, options) ..
'</td><td>' .. table.concat(material, ', ') ..
'</td></tr>')
end
return table.concat(ret)
end
--[[
Sablon:Világörökségi helyszín infobox/veszélyeztetettség/P793
]]
function p.vor_veszelyeztetettseg(frame)
local args = getArgs(frame, { frameOnly = true })
if args[1] == '-' then
return nil
end
if args[1] then
return args[1]
end
local itemId = mw.wikibase.getEntityIdForCurrentPage()
if not itemId then
return nil
end
local ret = {}
for _, s in ipairs(mw.wikibase.getBestStatements(itemId, 'P793')) do
local startTime, endTime
if s.mainsnak.datavalue.value.id == 'Q222384' and s.qualifiers then
startTime = s.qualifiers.P580 and mw.wikibase.renderSnak(s.qualifiers.P580[1]) or nil
endTime = s.qualifiers.P582 and mw.wikibase.renderSnak(s.qualifiers.P582[1]) or nil
end
if startTime or endTime then
table.insert(ret, (startTime or '') .. '–' .. (endTime or ''))
end
end
return table.concat(ret, '<br>')
end
--[[
Sablon:Stw
--]]
function p.newline_for_wikitext(frame)
local text = frame.args[1]
if not text or text:match('^%s*(.-)%s*$') == '' then
return nil
end
if mw.ustring.find('*#: ', mw.ustring.sub(text, 1, 1), 1, true) or mw.ustring.sub(text, 1, 2) == '{|' then
return '\n'
end
return nil
end
return p