require("strict")local Date = require('Module:Date')._Datelocal data = mw.loadData("Module:Sandbox/Premeditated/Reliable-sources/data")local ref_sites = data.siteslocal tracking_cats = data.tracking_catslocal os_date = os.date("%d %B %Y")
local p =
local tracking_categories = local namespace = mw.title.getCurrentTitle.namespacelocal add_tracking_category = function(cat) if namespace
-- The following values are set by get_statementslocal the_frame -- Used to for frame:extensionTaglocal the_qid -- Used to make links to Wikidata and to get more statements if needed laterlocal the_pid -- Used to make links to Wikidata
-- The following value is set by getReferences sooonlocal ref_texts =
local function has_value (tab, val) for index, value in ipairs(tab) do if value
local function getdomain(url) -- extract the full hostname with all subdomains local hostname = url:match '^https?://([^/]+)' or -- then, match the last 2 elements, separated by a dot return hostname:match '(%w+%.%w+)$'end
local function getReferences(frame, claim) local result = "" -- traverse through all references for ref in pairs(claim.references or) do local refparts -- traverse through all parts of the current reference for snakkey, snakval in orderedpairs(claim.references[ref].snaks or, claim.references[ref]["snaks-order"]) do if refparts then refparts = refparts .. ", " else refparts = "" end -- output the label of the property of the reference part, e.g. "imported from" for P143 refparts = refparts .. tostring(mw.wikibase.label(snakkey)) .. ": " -- output all values of this reference part, e.g. "German Wikipedia" and "English Wikipedia" if the referenced claim was imported from both sites for snakidx = 1, #snakval do if snakidx > 1 then refparts = refparts .. ", " end refparts = refparts .. getSnakValue(snakval[snakidx]) end end if refparts then result = result .. frame:extensionTag("ref", refparts) end end return resultend
local function orderedpairs(array, order) if not order then return pairs(array) end
-- return iterator function local i = 0 return function i = i + 1 if order[i] then return order[i], array[order[i]] end endend
local function getSnakValue(snak, parameter) if snak.snaktype
"string" then return snak.datavalue.value elseif snak.datavalue.type
"quantity" then return printDatavalueQuantity(snak.datavalue.value, parameter) elseif snak.datavalue.type
"wikibase-entityid" then return printDatavalueEntity(snak.datavalue.value, parameter) elseif snak.datavalue.type
return p