Module:Sandbox/Yurik/OSM NoWD
Module documentation
[create]
local p = {}
function p.list( frame )
local dataPage = frame.args[1]
local results = {}
local count = 0
table.insert(results, '!ID||Wikidata||Wikipedia\n')
for key, row in pairs(mw.ext.data.get(dataPage).data) do
local id, wikidata, wikipedia = unpack(row)
if wikipedia and wikipedia ~= '' then
wikipedia = '[[:' .. wikipedia .. ']]'
end
if wikidata and wikidata ~= '' then
wikidata = '<span class="plainlinks">[http://wikidata.org/wiki/' .. wikidata .. ' ' .. wikidata .. ']</span>'
end
local idtype = id:sub(1,1)
local osmid = id:sub(2)
if idtype == 'r' then idtype = 'relation'
elseif idtype == 'w' then idtype = 'way'
else idtype = 'node' end
local line = '|-\n| ' ..
'| <span class="plainlinks">[http://www.openstreetmap.org/' .. idtype .. '/' .. osmid .. ' ' .. id .. '] ([http://www.openstreetmap.org/edit?' .. idtype .. '=' .. osmid .. ' edit])</span>\n' ..
'| ' .. (wikidata or '') .. '\n' ..
'| ' .. (wikipedia or '') .. '\n'
table.insert(results, line)
count = count + 1
end
return '{| class="wikitable sortable"\n' .. table.concat(results, '\n') .. '|}\n\n' .. count .. ' rows. Original data is at [[commons:Data:' .. dataPage .. ']]'
end
function p.show( frame )
local dataPage = 'Sandbox/Yurik/OSM objects with missing Wikidata ID.tab'
local results = {}
table.insert(results, '!Name||LVL||ID||Wikipedia||Boundary||Type||Designation\n')
for key, row in pairs(mw.ext.data.get(dataPage).data) do
local relid, admin_level, latitude, longitude, name, wikipedia, boundary, type_, designation = unpack(row)
if wikipedia then
wikipedia = '[[:' .. wikipedia .. ']]'
end
local line = '|-\n| ' ..
'| ' .. (name or '') .. '\n' ..
'| ' .. (admin_level or '') .. '\n' ..
'| <span class="plainlinks">[http://www.openstreetmap.org/relation/' .. relid .. ' ' .. relid .. '] ([http://www.openstreetmap.org/edit?relation=' .. relid .. ' edit])</span>\n' ..
'| ' .. (wikipedia or '') .. '\n' ..
'| ' .. (boundary or '') .. '\n' ..
'| ' .. (type_ or '') .. '\n' ..
'| ' .. (designation or '') .. '\n'
table.insert(results, line)
end
return '{| class="wikitable sortable"\n' .. table.concat(results, '\n') .. '|}'
end
function p.dup( frame )
local dataPage = 'Sandbox/Yurik/OSM objects with duplicate Wikidata ID.tab'
local results = {}
local lastId = nil
table.insert(results, '! Wikidata ID, title || OSM relation || LVL || Name in OSM\n')
for key, row in pairs(mw.ext.data.get(dataPage).data) do
local admin_level, relid, wikidata, name, wikipedia, boundary, type_, altname, designation = unpack(row)
local isNewRow = lastId ~= wikidata
lastId = wikidata
local namestr = (name and (name .. '/') or '') .. (boundary and (boundary .. '_') or '') .. (type_ or '') .. (altname and ('/' .. altname) or '') .. (designation and ('/' .. designation) or '')
if isNewRow then
table.insert(results, '|-\n| colspan=4 style="background-color: black;" |\n')
wikidata = " '''<span class='plainlinks'>[https://wikidata.org/wiki/" .. wikidata .. " " .. wikidata .. "]</span>'''"
elseif wikipedia then
wikidata = "''[[:" .. wikipedia .. "]]''"
else
wikidata = ''
end
local line = '|-\n| ' ..
'| ' .. wikidata .. '\n' ..
'| <span class="plainlinks">[http://www.openstreetmap.org/relation/' .. relid .. ' ' .. relid .. '] ([http://www.openstreetmap.org/edit?relation=' .. relid .. ' edit])</span>\n' ..
'| ' .. (admin_level or '') .. '\n' ..
'| ' .. namestr .. '\n'
table.insert(results, line)
end
return '{| class="wikitable"\n' .. table.concat(results, '\n') .. '|}'
end
return p