<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3ASandbox%2FPremeditated%2FTest</id>
	<title>Module:Sandbox/Premeditated/Test - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3ASandbox%2FPremeditated%2FTest"/>
	<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sandbox/Premeditated/Test&amp;action=history"/>
	<updated>2026-08-11T02:59:41Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://stockhub.co/index.php?title=Module:Sandbox/Premeditated/Test&amp;diff=146006&amp;oldid=prev</id>
		<title>imported&gt;Legoktm: Replace Module:No globals with require( &quot;strict&quot; )</title>
		<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sandbox/Premeditated/Test&amp;diff=146006&amp;oldid=prev"/>
		<updated>2022-10-23T21:08:34Z</updated>

		<summary type="html">&lt;p&gt;Replace &lt;a href=&quot;/research/Module:No_globals&quot; title=&quot;Module:No globals&quot;&gt;Module:No globals&lt;/a&gt; with require( &amp;quot;strict&amp;quot; )&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
require(&amp;quot;strict&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
-- Wrapper for pcall which returns nil on failure.&lt;br /&gt;
local function quickPcall(func)&lt;br /&gt;
	local success, result = pcall(func)&lt;br /&gt;
	if success then&lt;br /&gt;
		return result&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Count words by &amp;#039;,&amp;#039;&lt;br /&gt;
local function countpattern(x) &lt;br /&gt;
	local _, count = x:gsub(&amp;quot;, &amp;quot;,&amp;quot;&amp;quot;) &lt;br /&gt;
	return count &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Get the rank of statement from table&lt;br /&gt;
local function getRank(prop)&lt;br /&gt;
	local rank = prop.rank&lt;br /&gt;
	if rank == &amp;#039;preferred&amp;#039; then&lt;br /&gt;
		return 1&lt;br /&gt;
	elseif rank == &amp;#039;normal&amp;#039; then&lt;br /&gt;
		return 0&lt;br /&gt;
	elseif rank == &amp;#039;deprecated&amp;#039; then&lt;br /&gt;
		return -1&lt;br /&gt;
	else&lt;br /&gt;
		return 0 -- No rank or undefined rank is treated as &amp;quot;normal&amp;quot;.&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Get the Q-id from the site or arg.&lt;br /&gt;
local function getId(id)&lt;br /&gt;
    local artikkel&lt;br /&gt;
    if not mw.wikibase then&lt;br /&gt;
        return &amp;#039;&amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
    if id then&lt;br /&gt;
    	artikkel = mw.wikibase.getEntity(id)&lt;br /&gt;
    else&lt;br /&gt;
    	artikkel = mw.wikibase.getEntity()&lt;br /&gt;
    end&lt;br /&gt;
    if not artikkel then&lt;br /&gt;
    	return &amp;#039;&amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
    return artikkel&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Gets all values and add a dot (&amp;quot;.&amp;quot;) to it.&lt;br /&gt;
p.file_extension = function(frame)&lt;br /&gt;
 	local exts = {}&lt;br /&gt;
	&lt;br /&gt;
    local artikkel = getId(frame.args[1])&lt;br /&gt;
    if artikkel == &amp;quot;&amp;quot; then&lt;br /&gt;
    	return &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
	local fileExten = quickPcall(function ()&lt;br /&gt;
		return artikkel:getBestStatements(&amp;#039;P1195&amp;#039;)&lt;br /&gt;
	 end)&lt;br /&gt;
	&lt;br /&gt;
	if fileExten == nil then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for i, ext in ipairs(fileExten) do&lt;br /&gt;
	    exts[#exts+1] = (&amp;quot;.&amp;quot; .. ext.mainsnak.datavalue.value)&lt;br /&gt;
	end&lt;br /&gt;
	return mw.text.nowiki(table.concat(exts, &amp;#039;, &amp;#039;))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function formatEntityId(entityId,i)&lt;br /&gt;
    local label&lt;br /&gt;
    local link = mw.wikibase.sitelink( entityId )&lt;br /&gt;
	if i == 1 then&lt;br /&gt;
    	label = mw.wikibase.label( entityId )&lt;br /&gt;
    	label = label:gsub(&amp;quot;^%l&amp;quot;, string.upper)&lt;br /&gt;
    else&lt;br /&gt;
    	label = mw.wikibase.label( entityId )&lt;br /&gt;
    end&lt;br /&gt;
    if link then&lt;br /&gt;
        if label then&lt;br /&gt;
            return &amp;#039;[[&amp;#039; .. link .. &amp;#039;|&amp;#039; .. label .. &amp;#039;]]&amp;#039;&lt;br /&gt;
        else&lt;br /&gt;
            return &amp;#039;[[&amp;#039; .. link .. &amp;#039;]]&amp;#039;&lt;br /&gt;
        end&lt;br /&gt;
    elseif label then&lt;br /&gt;
        return label --TODO what if no links and label + fallback language?&lt;br /&gt;
    else&lt;br /&gt;
        return &amp;#039;&amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Gets all values and if multip. add [[multi paradigm]]: ...&lt;br /&gt;
p.paradigm = function(frame)&lt;br /&gt;
	local pid = frame.args.pid --Property-ID to find best match&lt;br /&gt;
	local notAllowed = frame.args.notallowed -- Q-value that is not allowed&lt;br /&gt;
	local qId = frame.args.qid -- Q-value that is linked to in [[qId|..]&lt;br /&gt;
	local collapsedName = frame.args.name -- In collapsed mode name. Like 9 versjoner [vis] or 9 muligheter [vis]&lt;br /&gt;
	local multiName = frame.args.multiname -- The name of qId [[qId|multiName]]&lt;br /&gt;
	&lt;br /&gt;
 	local paradigms = {}&lt;br /&gt;
	&lt;br /&gt;
    local artikkel = getId(frame.args[1])&lt;br /&gt;
    if artikkel == &amp;quot;&amp;quot; then&lt;br /&gt;
    	return &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
	local paradigm = quickPcall(function ()&lt;br /&gt;
		return artikkel:getBestStatements(pid)&lt;br /&gt;
	end)&lt;br /&gt;
	&lt;br /&gt;
	if paradigm == nil then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	local count = 0&lt;br /&gt;
	for i, paradig in ipairs(paradigm) do&lt;br /&gt;
		if paradig.mainsnak.datavalue.value.id ~= notAllowed then --multi-paradigm programming&lt;br /&gt;
			count = count + 1&lt;br /&gt;
	    	paradigms[#paradigms+1] = formatEntityId(paradig.mainsnak.datavalue.value.id,count)&lt;br /&gt;
	    end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if paradigms[2] then&lt;br /&gt;
		local values = table.concat(paradigms, &amp;#039;, &amp;#039;)&lt;br /&gt;
		local multi = &amp;#039;[[&amp;#039; .. mw.wikibase.sitelink(qId) .. &amp;#039;|&amp;#039; .. multiName .. &amp;#039;]]&amp;#039; .. &amp;#039;: &amp;#039;&lt;br /&gt;
		if count &amp;gt;= 5 then&lt;br /&gt;
			return string.format([[&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;sentrert&amp;quot;&amp;gt;%s &amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;%s&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;]], &lt;br /&gt;
			count .. &amp;#039; &amp;#039; .. collapsedName ,multi .. values)&lt;br /&gt;
    	else&lt;br /&gt;
    		return multi .. values&lt;br /&gt;
    	end&lt;br /&gt;
	elseif paradigms[1] then&lt;br /&gt;
    	return paradigms[1]&lt;br /&gt;
    elseif paradigm[1] then&lt;br /&gt;
    	return &amp;#039;[[&amp;#039; .. mw.wikibase.sitelink(qId) .. &amp;#039;|&amp;#039; .. multiName .. &amp;#039;]]&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- Filter on rank and qqid. Then return with &amp;quot;,&amp;quot; between statements.&lt;br /&gt;
local function findBestProperty(entity, pid, qqid, ppid)&lt;br /&gt;
    local props = {}&lt;br /&gt;
    local propsAlt = {}&lt;br /&gt;
&lt;br /&gt;
    local prop = quickPcall(function ()&lt;br /&gt;
	return entity[&amp;#039;claims&amp;#039;][pid]&lt;br /&gt;
    end)&lt;br /&gt;
&lt;br /&gt;
    if not prop then&lt;br /&gt;
        return &amp;#039;&amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
	&lt;br /&gt;
    for i, pro in ipairs(prop) do&lt;br /&gt;
        local rank = getRank(pro)&lt;br /&gt;
        if rank == 1 and pro.qualifiers and pro.qualifiers[ppid] and pro.qualifiers[ppid][1].datavalue.value.id == qqid  then&lt;br /&gt;
            	props[#props+1] = pro.mainsnak.datavalue.value&lt;br /&gt;
        elseif rank == 0 and pro.qualifiers and pro.qualifiers[ppid] and pro.qualifiers[ppid][1].datavalue.value.id == qqid then&lt;br /&gt;
        		propsAlt[#propsAlt+1] = pro.mainsnak.datavalue.value&lt;br /&gt;
    	end&lt;br /&gt;
    end&lt;br /&gt;
	if props[1] then &lt;br /&gt;
		return quickPcall(function () &lt;br /&gt;
			return table.concat(props, &amp;#039;, &amp;#039;) &lt;br /&gt;
			end) &lt;br /&gt;
	elseif propsAlt[1] then &lt;br /&gt;
		return quickPcall(function () &lt;br /&gt;
			return table.concat(propsAlt, &amp;#039;, &amp;#039;) &lt;br /&gt;
			end)&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Find the version that you are looking for. Adds it to a collapsed class if over 5.&lt;br /&gt;
p.version = function(frame)&lt;br /&gt;
    local artikkel = getId(frame.args[1]) -- Args[1] is the Q-id (alt)&lt;br /&gt;
    local pid = frame.args.pid -- Property (Pxx) under Q-value (Qxxxx)&lt;br /&gt;
    local qQid = frame.args.qqid -- Secound Q-id&lt;br /&gt;
    local pPid = frame.args.ppid -- Secound P-id (Property)&lt;br /&gt;
    local alle = frame.args.alle -- if &amp;#039;ja&amp;#039; and if findBestProperty() return nil, get all statements&lt;br /&gt;
	&lt;br /&gt;
    local priVersions = quickPcall(function () &lt;br /&gt;
			return findBestProperty(artikkel,pid,qQid,pPid)&lt;br /&gt;
			end)&lt;br /&gt;
    if priVersions == &amp;#039;&amp;#039; and alle == &amp;#039;ja&amp;#039; then&lt;br /&gt;
		local temp = artikkel:formatPropertyValues( pid, mw.wikibase.entity.claimRanks )&lt;br /&gt;
		priVersions = temp[&amp;#039;value&amp;#039;]&lt;br /&gt;
    end&lt;br /&gt;
    if countpattern(priVersions) &amp;gt; 5 then&lt;br /&gt;
		return string.format([[&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;sentrert&amp;quot;&amp;gt;%s versjoner&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;%s&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;]], &lt;br /&gt;
		countpattern(priVersions), priVersions)&lt;br /&gt;
    else&lt;br /&gt;
		return mw.text.nowiki(priVersions)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;Legoktm</name></author>
	</entry>
</feed>