Modulo:Location/vec
Inpostasion de letura
local p = {}
p.referentFormat = 'brackets'
-- locations where any referent is redundant or innecessary
function p.namingExceptions(id)
local exc_id = {
['Q60'] = true, -- Nova York
['Q61'] = true, -- Washington DC (EUA)
['Q84'] = true, -- Londra (inghiltera)
['Q90'] = true, -- Parize (Fransa)
['Q220'] = true, -- Roma (Itàlia)
['Q2807'] = true, -- Madrid (Spagna)
}
return exc_id[id]
end
---- Cases by state
-- Canada, Quebec
local function namingLocationCA(qid, label, c_date, main)
local adm = main.fetchAdministrativeEntity(qid, 'vec')
local adm_entity = main.getAdmByID(adm, 'Q11828004', label) -- província del Canada
if adm_entity and adm_entity == 'Quebec' and not string.find(label, adm_entity, 1, true) then -- no Sita de Quebec (Quebec)
return main.addReferent(label, adm_entity, p.referentFormat)
end
return main.addReferent(label, 'Canada', p.referentFormat)
end
-- Spagna, per comarca/izola/província/comunità
local function namingLocationES(qid, label, c_date, main)
local adm = main.fetchAdministrativeEntity(qid, 'vec')
local community = main.getAdmByID(adm, 'Q10742', '') -- comunità autònoma
if community == nil then
community = main.getAdmByID(adm, 'Q3297051', '') -- comunità foral
end
if community == 'Izole Bałeàree' then
return main.addReferent(label, main.getAdmByID(adm, 'Q23442', label) or 'Bałeari', p.referentFormat) -- izola
elseif community == 'Catełogna' then
if c_date < 1700 then
return label
end
local comarca = main.getAdmByID(adm, 'Q937876', label) -- comarca de Catelogna
if not comarca then
comarca = main.getAdmByID(adm, 'Q19920968', label) -- entità teritoriale singular
end
if comarca
and (mw.ustring.find(comarca, mw.ustring.sub(label, 1, -2), 1, true) -- no Barcelona ...
or mw.ustring.find(label, comarca, 1, true)) -- no Guardiola de Berguedà
then
return label
end
return main.addReferent(label, comarca or community, p.referentFormat)
elseif community == 'Paeze Valensian' then
if c_date < 1900 then
return label
end
local comarca = main.getAdmByID(adm, 'Q766277', label) -- comarca del paeze valensian
if comarca
and (mw.ustring.find(comarca, mw.ustring.sub(label, 1, -2), 1, true) -- no Alacantí, ...
or mw.ustring.find(label, comarca, 1, true))
then
return label
end
return main.addReferent(label, comarca or community, p.referentFormat)
elseif community == 'Aragona' then
if c_date > 1900 then
local comarca = main.getReferencedEntity(qid, {
['Q1425491'] = 'Ribagorça',
['Q1479641'] = 'Llitera',
['Q804160'] = 'Baix Cinca',
['Q804156'] = 'Baix Aragó',
['Q804155'] = 'Baix Aragó - Casp',
['Q804156'] = 'Baix Aragó',
['Q1544003'] = 'Matarranya'
})
if comarca then
return main.addReferent(label, comarca, p.referentFormat)
end
end
elseif community == 'Ìzołe Canàrie' then
local adm_entity = main.getAdmByID(adm, 'Q23442', label) -- izola
if adm_entity == nil and _date < 1800 then
return main.addReferent(label, 'Canàrie', p.referentFormat)
end
if adm_entity == nil or mw.ustring.find(label, adm_entity or '', 1, true) then -- no Santa Cruz de Tenerife (Tenerife)...
adm_entity = main.getAdmByID(adm, 'Q162620', label) -- provinsa de Spagna
end
if adm_entity and mw.ustring.find(label, adm_entity, 1, true) then -- no Las Palmas de Gran Canaria (Las Palmas)
adm_entity = nil
end
return main.addReferent(label, adm_entity or 'Canàrie', p.referentFormat)
elseif c_date < 1800 then
return label
end
local province = main.getAdmByID(adm, 'Q162620', label) or community
if mw.ustring.find(province or '', label, 1, true) then -- no Madrid (Comunidad de Madrid)...
province = nil
end
return main.addReferent(label, province or 'Spagna', p.referentFormat)
end
-- EUA, per estat/territori
local function namingLocationUSA(qid, label, c_date, main)
local adm = main.fetchAdministrativeEntity(qid, 'vec')
local adm_entity = main.getAdmByID(adm, 'Q35657', label) -- estat dels Estats Units
if adm_entity == nil then
adm_entity = main.getAdmByID(adm, 'Q783733', label) -- territori no incorporat dels Estats Units
end
return main.addReferent(label, adm_entity or 'EUA', p.referentFormat)
end
-- Fransa, per comarca/regió_històrica/ultramar
local function namingLocationFR(qid, label, c_date, main)
local adm = main.fetchAdministrativeEntity(qid, 'vec')
local comarca = main.getAdmByID(adm, 'Q3573632', label) -- comarca
local adm_entity = main.getAdmByID(adm, 'Q6465', label) -- departament francès
if not comarca and adm_entity == 'Pirinei Orientałi' and c_date > 1700 then
comarca = main.getReferencedEntity(qid, {
['Q15475'] = 'Vallespir',
['Q15476'] = 'Rosejon',
['Q15477'] = 'Conflent',
['Q15478'] = 'Capcir',
['Q15479'] = 'Alta Cerdagna',
['Q15481'] = 'Fenoleda'
})
if not comarca then
comarca = 'Catełogna del Nord'
end
end
if comarca and mw.ustring.find(label, comarca, 1, true) then -- no Cornellà de Conflent (Conflent)
return label
elseif comarca then
return main.addReferent(label, comarca, p.referentFormat)
end
adm_entity = main.getAdmByID(adm, 'Q36784', label) -- regió de Fransa
if adm_entity == 'Guadalupe' or adm_entity == 'Martinica' or adm_entity == 'Guaiana Francesa'
or adm_entity == 'Mayotte' or adm_entity == 'Illa de la Reunió' or adm_entity == 'Còrsega'
or adm_entity == 'Bretagna' then
return main.addReferent(label, adm_entity, p.referentFormat)
end
adm_entity = main.getAdmByID(adm, 'Q719487', label) -- col·lectivitat d'ultramar
if not adm_entity then main.getAdmByID(adm, 'Q161243', label) end -- territori dependent
if adm_entity then
return main.addReferent(label, adm_entity, p.referentFormat)
elseif c_date > 1700 then
return main.addReferent(label, 'Fransa', p.referentFormat)
end
return label
end
-- Itàlia, per illa
local function namingLocationIT(qid, label, c_date, main)
local adm = main.fetchAdministrativeEntity(qid, 'vec')
local region = main.getAdmByID(adm, 'Q1710033', label) -- Regió amb Estatut Especial
if region == 'Sardegna' or region == 'Sicìlia' then
return main.addReferent(label, region, p.referentFormat)
end
return main.addReferent(label, 'Itàlia', p.referentFormat)
end
-- Portugal, per regió autònoma
local function namingLocationPT(qid, label, c_date, main)
local adm = main.fetchAdministrativeEntity(qid, 'vec')
local adm_entity = main.getAdmByID(adm, 'Q2914565', label) -- regió autònoma de Portugal
return main.addReferent(label, adm_entity or 'Portogało', p.referentFormat)
end
-- Regne Unit, per país/territori
local function namingLocationUK(qid, label, c_date, main)
if c_date < 1000 then
return label
end
local adm = main.fetchAdministrativeEntity(qid, 'vec')
local adm_entity = main.getAdmByID(adm, 'Q3336843', label) -- país del Regne Unit
if adm_entity == nil then
if c_date < 1700 then
return label
else
adm_entity = main.getAdmByID(adm, 'Q46395', label) -- territori britànic d'ultramar
end
end
return main.addReferent(label, adm_entity or 'Regno Unio', p.referentFormat)
end
-- Xina, Tibet
local function namingLocationCN(qid, label, c_date, main)
local adm = main.fetchAdministrativeEntity(qid, 'vec')
local region = main.getAdmByID(adm, 'Q57362', label) -- regió autònoma de la República Popular de la Xina
if region == 'Tibet' then
return main.addReferent(label, region, p.referentFormat)
end
return main.addReferent(label, 'RP Cina', p.referentFormat)
end
function p.namingLocation(state_id, loc_id, loc_label, context_date, main)
-- debugging: =p.namingLocation('Q29','Q10282','label')
--local main = require('Module:Location')
--local context_date = os.date('*t').year
if state_id == 'Q16' then -- Canada
return namingLocationCA(loc_id, loc_label, context_date, main)
elseif state_id == 'Q29' then -- Spagna
return namingLocationES(loc_id, loc_label, context_date, main)
elseif state_id == 'Q30' then -- EUA
return namingLocationUSA(loc_id, loc_label, context_date, main)
elseif state_id == 'Q38' then -- Itàlia
return namingLocationIT(loc_id, loc_label, context_date, main)
elseif state_id == 'Q45' then -- Portogało
return namingLocationPT(loc_id, loc_label, context_date, main)
elseif state_id == 'Q142' then -- Fransa
return namingLocationFR(loc_id, loc_label, context_date, main)
elseif state_id == 'Q145' then -- Regno Unio
return namingLocationUK(loc_id, loc_label, context_date, main)
elseif state_id == 'Q148' then -- Repùblega Popolare de Cina
return namingLocationCN(loc_id, loc_label, context_date, main)
end
return
end
return p