<?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%3ASorted_plain_list</id>
	<title>Module:Sorted plain list - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3ASorted_plain_list"/>
	<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sorted_plain_list&amp;action=history"/>
	<updated>2026-05-24T12:43:29Z</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:Sorted_plain_list&amp;diff=146852&amp;oldid=prev</id>
		<title>imported&gt;Izno: use module:list here to avoid using the plainlist class directly in prep for tstyles</title>
		<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sorted_plain_list&amp;diff=146852&amp;oldid=prev"/>
		<updated>2022-12-07T23:03:15Z</updated>

		<summary type="html">&lt;p&gt;use module:list here to avoid using the plainlist class directly in prep for tstyles&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- This module generates a sorted plain list&lt;br /&gt;
-- It was created as a modification of [[Module:Sort]]&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local lang = mw.getContentLanguage()&lt;br /&gt;
local ubl = require(&amp;#039;Module:List&amp;#039;).unbulleted&lt;br /&gt;
&lt;br /&gt;
local function transformstring(s)&lt;br /&gt;
	local a = mw.text.trim(s)&lt;br /&gt;
	a = mw.ustring.gsub(a, &amp;#039;%[%[[^%[%]&amp;lt;&amp;gt;|][^%[%]&amp;lt;&amp;gt;|]*|([^%[%]&amp;lt;&amp;gt;|][^%[%]&amp;lt;&amp;gt;|]*)%]%]&amp;#039;, &amp;#039;%1&amp;#039;)&lt;br /&gt;
	a = mw.ustring.gsub(a, &amp;#039;%[%[([^%[%]&amp;lt;&amp;gt;|][^%[%]&amp;lt;&amp;gt;|]*)%]%]&amp;#039;, &amp;#039;%1&amp;#039;)&lt;br /&gt;
	a = mw.ustring.gsub(a, &amp;#039;[%s%‑]&amp;#039;, &amp;#039;AA&amp;#039; )&lt;br /&gt;
	a = mw.ustring.gsub(a, &amp;#039;([%D])([%d])$&amp;#039;, &amp;#039;%10%2&amp;#039;)&lt;br /&gt;
	return a&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- This function was copied/modified from [[Module:Wikidata]]&lt;br /&gt;
local function getValue(frame, propertyID)&lt;br /&gt;
	local entity = mw.wikibase.getEntityObject()&lt;br /&gt;
	local claims&lt;br /&gt;
	if entity and entity.claims then&lt;br /&gt;
		claims = entity.claims[propertyID]&lt;br /&gt;
	end&lt;br /&gt;
	if claims then&lt;br /&gt;
		-- if wiki-linked value output as link if possible&lt;br /&gt;
		if (claims[1] and claims[1].mainsnak.snaktype == &amp;quot;value&amp;quot; and claims[1].mainsnak.datavalue.type == &amp;quot;wikibase-entityid&amp;quot;) then&lt;br /&gt;
			local out = {}&lt;br /&gt;
			for k, v in pairs(claims) do&lt;br /&gt;
				local sitelink = mw.wikibase.sitelink(&amp;quot;Q&amp;quot; .. v.mainsnak.datavalue.value[&amp;quot;numeric-id&amp;quot;])&lt;br /&gt;
				local label = mw.wikibase.label(&amp;quot;Q&amp;quot; .. v.mainsnak.datavalue.value[&amp;quot;numeric-id&amp;quot;])&lt;br /&gt;
				if label == nil then label = &amp;quot;Q&amp;quot; .. v.mainsnak.datavalue.value[&amp;quot;numeric-id&amp;quot;] end&lt;br /&gt;
				&lt;br /&gt;
				if sitelink then&lt;br /&gt;
					out[#out + 1] = &amp;quot;[[&amp;quot; .. sitelink .. &amp;quot;|&amp;quot; .. label .. &amp;quot;]]&amp;quot;&lt;br /&gt;
				else&lt;br /&gt;
					out[#out + 1] = label&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			return out&lt;br /&gt;
		else&lt;br /&gt;
			-- just return best values&lt;br /&gt;
			return { entity:formatPropertyValues(propertyID).value }&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		return {&amp;quot;&amp;quot;}&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.asc(frame)&lt;br /&gt;
    local items&lt;br /&gt;
    if frame.args.propertyID then&lt;br /&gt;
    	items = getValue(frame, frame.args.propertyID)&lt;br /&gt;
    else&lt;br /&gt;
    	items = mw.text.split( frame.args[1] or &amp;#039;&amp;#039;, frame.args[2] or &amp;#039;,&amp;#039;, true)&lt;br /&gt;
    end&lt;br /&gt;
    if (frame.args[&amp;#039;type&amp;#039;] or &amp;#039;&amp;#039;) == &amp;#039;number&amp;#039; then&lt;br /&gt;
    	table.sort( items, function (a, b) return ((lang:parseFormattedNumber(a) or math.huge) &amp;lt; (lang:parseFormattedNumber(b) or math.huge)) end )&lt;br /&gt;
    else&lt;br /&gt;
	    table.sort( items, function (a, b) return mw.text.trim(a) &amp;lt; mw.text.trim(b) end )&lt;br /&gt;
    end&lt;br /&gt;
    return ubl(items)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.desc(frame)&lt;br /&gt;
    if frame.args.propertyID then&lt;br /&gt;
    	items = getValue(frame, frame.args.propertyID)&lt;br /&gt;
    else&lt;br /&gt;
    	items = mw.text.split( frame.args[1] or &amp;#039;&amp;#039;, frame.args[2] or &amp;#039;,&amp;#039;, true)&lt;br /&gt;
    end&lt;br /&gt;
    if (frame.args[&amp;#039;type&amp;#039;] or &amp;#039;&amp;#039;) == &amp;#039;number&amp;#039; then&lt;br /&gt;
    	table.sort( items, function (a, b) return ((lang:parseFormattedNumber(a) or math.huge) &amp;gt; (lang:parseFormattedNumber(b) or math.huge)) end )&lt;br /&gt;
    else&lt;br /&gt;
    	table.sort( items, function (a, b) return mw.text.trim(a) &amp;gt; mw.text.trim(b) end )&lt;br /&gt;
    end&lt;br /&gt;
    return ubl(items)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.ascd(frame)&lt;br /&gt;
    local items&lt;br /&gt;
    if frame.args.propertyID then&lt;br /&gt;
    	items = getValue(frame, frame.args.propertyID)&lt;br /&gt;
    else&lt;br /&gt;
    	items = mw.text.split( frame.args[1] or &amp;#039;&amp;#039;, frame.args[2] or &amp;#039;,&amp;#039;, true)&lt;br /&gt;
    end&lt;br /&gt;
    if (frame.args[&amp;#039;type&amp;#039;] or &amp;#039;&amp;#039;) == &amp;#039;number&amp;#039; then&lt;br /&gt;
    	table.sort( items, function (a, b) return ((lang:parseFormattedNumber(a) or math.huge) &amp;lt; (lang:parseFormattedNumber(b) or math.huge)) end )&lt;br /&gt;
    else&lt;br /&gt;
	    table.sort( items, function (a, b) return ( transformstring(a) &amp;lt; transformstring(b) ) end)&lt;br /&gt;
    end&lt;br /&gt;
    return ubl(items)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.descd(frame)&lt;br /&gt;
    local items&lt;br /&gt;
    if frame.args.propertyID then&lt;br /&gt;
    	items = getValue(frame, frame.args.propertyID)&lt;br /&gt;
    else&lt;br /&gt;
    	items = mw.text.split( frame.args[1] or &amp;#039;&amp;#039;, frame.args[2] or &amp;#039;,&amp;#039;, true)&lt;br /&gt;
    end&lt;br /&gt;
    if (frame.args[&amp;#039;type&amp;#039;] or &amp;#039;&amp;#039;) == &amp;#039;number&amp;#039; then&lt;br /&gt;
    	table.sort( items, function (a, b) return ((lang:parseFormattedNumber(a) or math.huge) &amp;gt; (lang:parseFormattedNumber(b) or math.huge)) end )&lt;br /&gt;
    else&lt;br /&gt;
	    table.sort( items, function (a, b) return ( transformstring(a) &amp;gt; transformstring(b) ) end)&lt;br /&gt;
    end&lt;br /&gt;
    return ubl(items)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;Izno</name></author>
	</entry>
</feed>