Moduuli:Wikidata-lista/titlecol
Siirry navigaatioon
Siirry hakuun
Tämän moduulin ohjeistuksen voi tehdä sivulle Moduuli:Wikidata-lista/titlecol/ohje
local t={};
function t.titlecol(frame)
local id = frame.args.item or "";
local parts = frame.args.parts or "";
local entity = mw.wikibase.getEntityObject(id);
local targetproperties={"P361", "P669"}
if not entity or not entity.claims then
return nil
end
local ret = "";
local title ="";
local description ="";
local label=mw.wikibase.getLabel(id)
local sitelink=mw.wikibase.getSitelink(id)
local extlabels={}
local extwdlabels={}
for n, property in pairs(targetproperties) do
if (entity.claims[property]) then
for p, claim in pairs(entity.claims[property]) do
if claim["mainsnak"]["datatype"]=="wikibase-item" then
tmp_id=claim["mainsnak"]["datavalue"]["value"]["id"];
-- Already found
extwdlabels[tmp_id]=1
tmp_sitelink=mw.wikibase.getSitelink(tmp_id);
if tmp_sitelink then
if (sitelink==nil or (tmp_sitelink~=sitelink)) then
extlabels[tmp_sitelink]=mw.wikibase.getLabel(tmp_id);
end
end
end
end
end
end
local partlist=mw.text.split( parts, " ", true )
for p, tmp_id in pairs(partlist) do
if extwdlabels[tmp_id]==nil then
tmp_sitelink=mw.wikibase.getSitelink(tmp_id);
if tmp_sitelink then
if (sitelink==nil or (tmp_sitelink~=sitelink)) then
extlabels[tmp_sitelink]=mw.wikibase.getLabel(tmp_id);
end
end
end
end
-- Format title
if sitelink then
if sitelink~=label then
title="[[" .. sitelink .."|" ..label .."]]";
else
title="[[" .. sitelink .."]]";
end
else
local replacements={}
title=label
-- Trying to search linkable words from title and replace them with md5 hash
-- for preventing duplicate linking
for tmp_sitelink, tmp_label in pairs(extlabels) do
if mw.ustring.find(title, tmp_label, 1, true ) then
if tmp_sitelink~=tmp_label then
tmp_link="[[" .. tmp_sitelink .."|" ..tmp_label .."]]";
else
tmp_link="[[" .. tmp_sitelink .."]]";
end
tmp_key="__" .. mw.hash.hashValue( "md5", tmp_link ) .."__"
title=mw.ustring.gsub(title, tmp_label, tmp_key)
replacements[tmp_key]=tmp_link;
-- remove used links from extlabels table
extlabels[tmp_sitelink]=nil;
end
end
-- Replace md5 hashes with real links
for tmp_key, tmp_link in pairs(replacements) do
title=mw.ustring.gsub(title, tmp_key, tmp_link)
end
end
-- Format description
local prefix ="";
for tmp_sitelink, tmp_label in pairs(extlabels) do
if tmp_sitelink~=tmp_label then
tmp_link="[[" .. tmp_sitelink .."|" ..tmp_label .."]]";
else
tmp_link="[[" .. tmp_sitelink .."]]";
end
description=description .. prefix .. tmp_link;
prefix=", "
end
-- Format output
if description~="" then
ret=title .. "<br><small>(" .. description .. ")</small>";
else
ret=title;
end
return ret;
end
-- Tulostaa tunnisteetlinkit
function t.tunnisteetcol(frame)
local targetproperties={
p4009={label = "RKY", url="http://www.rky.fi/read/asp/r_kohde_det.aspx?KOHDE_ID=$1"},
p4106={label = "MJID", url="http://www.kyppi.fi/to.aspx?id=112.$1"},
p5310={label = "RPRID", url="https://www.kyppi.fi/palveluikkuna/rapea/read/asp/r_kohde_det.aspx?KOHDE_ID=$1"},
p5313={label = "RPID", url=""},
p8355={label = "Ratu", url="https://fiwiki-tools-web.toolforge.org/helsinki_city_map_redirect.php?P8355=$1"},
p2347={label = "YSO", url="http://www.yso.fi/onto/yso/p$1"},
p3824={label = "VTJ-PRT", url=""},
wikidata={label = "Wikidata", url="https://www.wikidata.org/wiki/$1"}
}
local ret=""
local parentargs={}
if frame == mw.getCurrentFrame() then
parentargs=frame:getParent().args
end
for propkey, prop in pairs(targetproperties) do
proparg=parentargs[propkey] or frame.args[propkey] or ""
local propvalues=mw.text.split( proparg, " ", true )
for p, propval in pairs(propvalues) do
if propval~="" then
str=prop.label .. ": "
if prop.url~="" then
str = str .. "[" .. mw.ustring.gsub(prop.url, "$1", propval) .." " .. propval .."]"
else
str = str .. propval
end
ret = ret .. str .."<br>"
end
end
end
return ret
end
return t;