new_URL = new_URL.gsub(new_URL, pattern, "");
end
if 'fr' == cfg.this_project_language then
return "[" .. URL .. " " .. new_URL .. "]";
else
return "[" .. URL .. " " .. new_URL .. "]";
end
]]
local function xlate_wikidata (frame, data_requested, qid, property_id, qualifier_id, value_of_qualifier, reference, preferred, raw, linked)
local local_reference = reference;
local local_preferred = preferred;
local local_raw = raw;
local local_linked = linked;
local Wd = require('Module:European_and_national_party_data/Wd')
if 'en' == cfg.this_project_language or 'pt' == cfg.this_project_language then
if local_reference == 'reference=yes' then local_reference = 'reference' elseif local_reference == 'references=yes' then local_reference = 'references' else local_reference = '' end;
if local_preferredlocal_reference == 'preferredreference=yes' then local_preferredlocal_reference = 'preferredreference' elseif local_reference == 'references=yes' then local_reference = 'references' else local_preferredlocal_reference = '' end;
if local_rawlocal_preferred == 'rawpreferred=yes' then local_rawlocal_preferred = 'rawpreferred' else local_rawlocal_preferred = '' end;
if local_linkedlocal_raw == 'linkedraw=yes' then local_linkedlocal_raw = 'linkedraw' else local_linkedlocal_raw = '' end;
if local_linked == 'linked=yes' then local_linked = ' linked' else local_linked = ' -' end; ▼
if '' ~= value_of_qualifier then ▼
return local frame:expandTemplate ({title='wikidata', argswdargs = {data_requested, local_reference, local_preferred, local_raw, local_linked, qid, property_id, [qualifier_id] = value_of_qualifier}});
--data_requested .. " - " .. qid .. " - " .. property_id .. " - " .. qualifier_id .. " = " .. value_of_qualifier;
else
table.insert(wdargs, 5, qid)
return frame:expandTemplate ({title='wikidata', args = {data_requested, local_reference, local_preferred, local_raw, local_linked, qid, property_id}});
end
else
if '' ~= value_of_qualifier then ▼
return frame:expandTemplate ({title='wikidata', args = {data_requested, local_reference, local_preferred, local_raw, local_linked, property_id, [qualifier_id] = value_of_qualifier}});
else
return frame:expandTemplate ({title='wikidata', args = {data_requested, local_reference, local_preferred, local_raw, local_linked, property_id}});
end
end
elseif 'fr' == cfg.this_project_language then
if local_reference == 'reference=yes' then local_reference = 'reference' elseif local_reference == 'references=yes' then local_reference = 'references' else local_reference = '' end;
if local_preferred == 'preferred=yes' then local_preferred = 'preferred' else local_preferred = '' end;
if local_raw == 'raw=yes' then local_raw = 'raw' else local_raw = '' end;
▲ if local_linked == 'linked=yes' then local_linked = '' else local_linked = '-' end;
if data_requested == 'references' then return '' end;
if qid then
if data_requested == 'label' then
return frame:expandTemplate ({title='Intitulé', args = {qid}});
elseif '' ~= value_of_qualifier then
--example of query not from EUPP page: {{wikidata|entity=Q208242|P1410|qualifier=P208|qualifiervalue=Q8886}}
return frame:expandTemplate ({title='wikidata', args = {["entity"] = qid, property_id, ['displayformat'] = local_raw, ['link'] = local_linked, ["qualifier"] = qualifier_id, ["qualifiervalue"] = value_of_qualifier, ['numval'] = 1}});
else
--example of query not from EUPP page: {{wikidata|entity=Q208242|P465}}
return frame:expandTemplate ({title='wikidata', args = {["entity"] = qid, property_id, ['displayformat'] = local_raw, ['link'] = local_linked, ['numval'] = 1}});
end
else
if data_requested == 'label' then
return frame:expandTemplate ({title='Intitulé'});
elseif '' ~= value_of_qualifier then
--example of query from EUPP page: {{wikidata|P1410|qualifier=P208|qualifiervalue=Q8886}}
return frame:expandTemplate ({title='wikidata', args = {property_id, ['displayformat'] = local_raw, ['link'] = local_linked, ["qualifier"] = qualifier_id, ["qualifiervalue"] = value_of_qualifier, ['numval'] = 1}});
else
return frame:expandTemplate ({title='wikidata', args = {property_id, ['displayformat'] = local_raw, ['link'] = local_linked, ['numval'] = 1}});
end
end
end
▲ if qualifier_id and '' ~= value_of_qualifier then
▲ ifwdargs[qualifier_id] '' ~= value_of_qualifier then;
return Wd['_' .. data_requested](wdargs);
end
if property_id == "label" then -- if the label of the Wikidata element is requested
if not party then
data = xlate_wikidata (frame, 'label', '', '', '', '', 'reference=no', 'preferred=no', 'raw=no', 'linked=no');
else
data = xlate_wikidata (frame, 'label', party_qid, '', '', '', 'reference=no', 'preferred=no', 'raw=no', 'linked=no');
end
elseif property_id == "individual members date" then -- special case
if not party then
data = xlate_wikidata (frame, 'qualifier', '', P2124, '', P585, 'reference=no', 'preferred=yes', 'raw=no', 'linked=no');
else
data = xlate_wikidata (frame, 'qualifier', party_qid, 'P2124', '', 'P585', 'reference=no', 'preferred=yes', 'raw=no', 'linked=no');
end
else -- for all other cases
if not party then -- direct call when no party is specified
if option == "raw" or option == "raw-noref" then
data = xlate_wikidata (frame, 'property', '', property_id, '', '', reference, 'preferred=no', 'raw=yes', 'linked=no');
elseif option == "linked" then
data = xlate_wikidata (frame, 'property', '', property_id, '', '', reference, 'preferred=no', 'raw=no', 'linked=yes');
else
xlate_wikidata (frame, 'property', '', property_id, '', '', reference, 'preferred=no', 'raw=no', 'linked=no');
end
else -- otherwise we add the qID
if option == "raw" or option == "raw-noref" then
data = xlate_wikidata (frame, 'property', party_qid, property_id, '', '', reference, 'preferred=no', 'raw=yes', 'linked=no');
elseif option == "linked" then
data = xlate_wikidata (frame, 'property', party_qid, property_id, '', '', reference, 'preferred=no', 'raw=no', 'linked=yes');
else
data = xlate_wikidata (frame, 'property', party_qid, property_id, '', '', reference, 'preferred=no', 'raw=no', 'linked=no');
end
end
local function institution_size (frame, institution)
local institution_size = xlate_wikidata (frame, 'property', cfg.institutions_t[institution], 'P1342', '', '', 'reference=no', 'preferred=no', 'raw=no', 'linked=no'); -- get the institution size
if '' == institution_size then -- if no institution size
return make_error_msg (substitute (cfg.error_messages_t.unknown_inst, {institution}));
local function member_state_delegation_size (frame, member_state_qid)
local delegation_size = xlate_wikidata (frame, 'property', member_state_qid, 'P1410', 'P194', 'Q8889', 'reference=no', 'preferred=no', 'raw=no', 'linked=no'); -- get the delegation size
if '' == delegation_size then -- if no delegation size
return make_error_msg (substitute (cfg.error_messages_t.not_member_state, {member_state_qid}));
end
return house_qid and xlate_wikidata (frame, 'property', house_qid, 'P1342', '', '', 'reference=no', 'preferred=no', 'raw=no', 'linked=no') or 0; -- house_qid is nil when no upper or lower house
end
local member_state_qid = allpp_get_data (frame, mw.wikibase.getEntityIdForCurrentPage(), cfg.data_prop_t.country, 'raw-noref');
local house_qid = house_qid_from_member_state_qid (institution, member_state_qid)
return xlate_wikidata (frame, 'references', '', 'P1410', 'P194', house_qid, 'reference=no', 'preferred=no', 'raw=no', 'linked=no');
elseif party:match ('^Q%d+$') then
local member_state_qid = allpp_get_data (frame, party, cfg.data_prop_t.country, 'raw-noref');
local house_qid = house_qid_from_member_state_qid (institution, member_state_qid)
return xlate_wikidata (frame, 'references', party, 'P1410', 'P194', house_qid, 'reference=no', 'preferred=no', 'raw=no', 'linked=no');
end
end
elseif institution == 'EC' or institution == 'EUCO' then
if party == "THISPARTY" then
return xlate_wikidata (frame, 'references', '', 'P1410', 'P208', cfg.institutions_t[institution], 'reference=no', 'preferred=no', 'raw=no', 'linked=no');
elseif cfg.parties_t[party] then
return xlate_wikidata (frame, 'references', cfg.parties_t[party], 'P1410', 'P208', cfg.institutions_t[institution], 'reference=no', 'preferred=no', 'raw=no', 'linked=no');
elseif cfg.alliances_t[party] then
return xlate_wikidata (frame, 'references', cfg.alliances_t[party], 'P1410', 'P208', cfg.institutions_t[institution], 'reference=no', 'preferred=no', 'raw=no', 'linked=no');
elseif party:match ('^Q%d+$') then
return xlate_wikidata (frame, 'references', party, 'P1410', 'P208', cfg.institutions_t[institution], 'reference=no', 'preferred=no', 'raw=no', 'linked=no');
end
else
if party == "THISPARTY" then
return xlate_wikidata (frame, 'references', '', 'P1410', 'P194', cfg.institutions_t[institution], 'reference=no', 'preferred=no', 'raw=no', 'linked=no');
elseif cfg.parties_t[party] then
return xlate_wikidata (frame, 'references', cfg.parties_t[party], 'P1410', 'P194', cfg.institutions_t[institution], 'reference=no', 'preferred=no', 'raw=no', 'linked=no');
elseif cfg.alliances_t[party] then
return xlate_wikidata (frame, 'references', cfg.alliances_t[party], 'P1410', 'P194', cfg.institutions_t[institution], 'reference=no', 'preferred=no', 'raw=no', 'linked=no');
elseif party:match ('^Q%d+$') then
return xlate_wikidata (frame, 'references', party, 'P1410', 'P194', cfg.institutions_t[institution], 'reference=no', 'preferred=no', 'raw=no', 'linked=no');
end
end
local function allpp_get_seats_ref_qid (frame, institution_qid)
return xlate_wikidata (frame, 'references', '', 'P1410', 'P194', institution_qid, 'reference=no', 'preferred=no', 'raw=no', 'linked=no');
end
return tonumber (party_seats) and round (100 * party_seats / member_state_delegation_size (frame, member_state_qid)) or party_seats;
else
return tonumber (party_seats) and round (100 * party_seats / xlate_wikidata (frame, 'property', cfg.institutions_t[institution], 'P1342', '', '', 'reference=no', 'preferred=no', 'raw=no', 'linked=no')) or party_seats;
end
end
local retval = "";
if party == "THISPARTY" then -- flag used when module is called from the page of a European party; less expensive
retval = xlate_wikidata (frame, 'property', '', 'P1410', body_prop, cfg.institutions_t[institution], 'reference=no', 'preferred=no', 'raw=no', 'linked=no'); -- init some of the {{wikidata}} parameters with THISPARTY (only when called from the page of a European party)
elseif cfg.alliances_t[party] then
retval = xlate_wikidata (frame, 'property', cfg.alliances_t[party], 'P1410', body_prop, cfg.institutions_t[institution], 'reference=no', 'preferred=no', 'raw=no', 'linked=no'); -- init some of the {{wikidata}} parameters
elseif cfg.parties_t[party] then
retval = xlate_wikidata (frame, 'property', cfg.parties_t[party], 'P1410', body_prop, cfg.institutions_t[institution], 'reference=no', 'preferred=no', 'raw=no', 'linked=no'); -- init some of the {{wikidata}} parameters
elseif party:match ('^Q%d+$') then
retval = xlate_wikidata (frame, 'property', party, 'P1410', body_prop, cfg.institutions_t[institution], 'reference=no', 'preferred=no', 'raw=no', 'linked=no'); -- init some of the {{wikidata}} parameters
end
for _, qid in pairs (cfg.parties_t) do -- loop through all parties in <cfg.parties_t>
local local_qid = qid; -- set the last {{wikidata}} parameter
sum = sum + xlate_wikidata (frame, 'property', local_qid, 'P1410', body_prop, cfg.institutions_t[institution], 'reference=no', 'preferred=no', 'raw=no', 'linked=no'); -- expand and tally
end
local function eupp_seats_in_eu_institutions (frame, party, institution)
if party == "IND" and institution == "EUCO" then -- special case of independent politicians on European Council
return xlate_wikidata (frame, 'property', cfg.misc_parties_t['IND'], 'P1410', 'P208', cfg.institutions_t[institution], 'reference=no', 'preferred=no', 'raw=no', 'linked=no');
elseif party == "NONE" then -- returns seats not occupied by European parties
local retval = xlate_wikidata (frame, 'property', cfg.institutions_t[institution], 'P1342', '', '', 'reference=no', 'preferred=no', 'raw=no', 'linked=no'); -- get number of seats in the institution
if institution == "EUCO" then -- if EUCO, use P208 and separate case to account for independent politicians
local ind = xlate_wikidata (frame, 'property', cfg.misc_parties_t['IND'], 'P1410', 'P208', cfg.institutions_t[institution], 'reference=no', 'preferred=no', 'raw=no', 'linked=no');
return retval - (eupp_sum_seats_in_eu_institutions (frame, institution, cfg.body_prop_t[institution]) + ind);
local function eupp_seat_share_in_eu_institutions (frame, party, institution)
if party == "IND" and institution == "EUCO" then -- special case of independent politicians on European Council
return allpp_make_share_in_eu_institutions (frame, xlate_wikidata (frame, 'property', cfg.misc_parties_t['IND'], 'P1410', 'P208', cfg.institutions_t[institution], 'reference=no', 'preferred=no', 'raw=no', 'linked=no'), institution);
elseif party == "NONE" then -- returns seats not occupied by European parties
local retval = xlate_wikidata (frame, 'property', cfg.institutions_t[institution], 'P1342', '', '', 'reference=no', 'preferred=no', 'raw=no', 'linked=no');
if institution == "EUCO" then -- if EUCO, use P208 and separate case to account for independent politicians
local ind = xlate_wikidata (frame, 'property', cfg.misc_parties_t['IND'], 'P1410', 'P208', cfg.institutions_t[institution], 'reference=no', 'preferred=no', 'raw=no', 'linked=no');
return allpp_make_share_in_eu_institutions (frame, retval - (eupp_sum_seats_in_eu_institutions (frame, institution, cfg.body_prop_t[institution]) + ind), institution);
end
return house_qid and xlate_wikidata (frame, 'property', national_party_qid, 'P1410', 'P194', house_qid, 'reference=no', 'preferred=no', 'raw=no', 'linked=no') or 0;
end
local house_qid = house_qid_from_member_state_qid (house_type, member_state_qid);
local npp_seats = house_qid and xlate_wikidata (frame, 'property', party_qid, 'P1410', 'P194', house_qid, 'reference=no', 'preferred=no', 'raw=no', 'linked=no') or 0;
local house_seats = house_qid and xlate_wikidata (frame, 'property', house_qid, 'P1342', '', '', 'reference=no', 'preferred=no', 'raw=no', 'linked=no') or 0;
if data == "seats" then
if width and not validate_width (width) then
return make_error_msg (substitute (cfg.error_messages_t.parameter_invalid, {width}), template_name); -- yep, abandon with error message
end
if 'fr' == cfg.this_project_language then -- the French version of the wikidata template does not allow only grabbing the reference (it is always attached to the value, which breaks the composition bar)
reference = false;
end
local upper_house_qid = cfg.tab_data_t[row].upper_house_qid;
local upper_house_name = cfg.tab_data_t[row].upper_house;
local retval_lower = xlate_wikidata (frame, 'property', national_party_qid, 'P1410', 'P194', lower_house_qid, 'reference=no', 'preferred=no', 'raw=no', 'linked=no');
local retval_upper = xlate_wikidata (frame, 'property', national_party_qid, 'P1410', 'P194', upper_house_qid, 'reference=no', 'preferred=no', 'raw=no', 'linked=no');
if '' == retval_lower then
--local property = args_t[2];
--return allpp_get_data (frame, party_qid, cfg.data_prop_t.country, 'raw-noref');
--return tostring(xlate_wikidata (frame, 'property', party, cfg.data_prop_t.website, '', '', 'reference=no', 'preferred=no', 'raw=no', 'linked=no'));
return frame:expandTemplate ({title='wikidata', args = {["entity"] = party, cfg.data_prop_t.website, ['link'] = "-", ['numval'] = 1}});
end
|