Module documentation
Overview
This module may be used to generate a sorted "plain list", which is a sorted unordered HTML list without visible bullets.
- There are six possible sort modes
asc
is ascending as defined by the default LUA string comparison operator.desc
is descending as defined by the default LUA string comparison operator.asc
with|type=number
is ascending using numeric comparison instead of string comparison.desc
with|type=number
is descending using numeric comparison instead of string comparison.ascd
is ascending dictionary order, so spaces are sorted before other characters.descd
is descending dictionary order, so spaces are sorted before other characters.
- By default, the list is assumed to be delimited by commas, this can be changed to semicolons or any other choice.
- The list may be implicitly loaded from a wikidata property using the
|propertyID=
parameter, which will override any explicitly specified values.
Usage
To convert a comma separated list to a sorted plainlist, use
{{#invoke:sorted plain list|asc|<comma separated entries>}}
{{#invoke:sorted plain list|desc|<comma separated entries>}}
{{#invoke:sorted plain list|ascd|<comma separated entries>}}
{{#invoke:sorted plain list|descd|<comma separated entries>}}
To convert a semicolon separated list to a sorted plainlist, use
{{#invoke:sorted plain list|asc|<semicolon separated entries>|;}}
{{#invoke:sorted plain list|desc|<semicolon separated entries>|;}}
{{#invoke:sorted plain list|ascd|<semicolon separated entries>|;}}
{{#invoke:sorted plain list|descd|<semicolon separated entries>|;}}
To convert a semicolon separated list of numbers to a sorted plainlist, use
{{#invoke:sorted plain list|asc|<semicolon separated entries>|;|type=number}}
{{#invoke:sorted plain list|desc|<semicolon separated entries>|;|type=number}}
To convert a wikidata property list to a sorted plainlist, use
{{#invoke:sorted plain list|asc|propertyID=<PNUMBER>}}
{{#invoke:sorted plain list|desc|propertyID=<PNUMBER>}}
{{#invoke:sorted plain list|ascd|propertyID=<PNUMBER>}}
{{#invoke:sorted plain list|descd|propertyID=<PNUMBER>}}
Examples
{{#invoke:sorted plain list|asc|apples, oranges, bananas}}
→ - apples
- bananas
- oranges
{{#invoke:sorted plain list|desc|apples, oranges, bananas}}
→ - oranges
- bananas
- apples
{{#invoke:sorted plain list|asc|Santa Fe, Santa Rosa, Santana}}
→ - Santa Fe
- Santa Rosa
- Santana
{{#invoke:sorted plain list|desc|Santa Fe, Santa Rosa, Santana}}
→ - Santana
- Santa Rosa
- Santa Fe
{{#invoke:sorted plain list|ascd|Santa Fe, Santa Rosa, Santana}}
→ - Santa Fe
- Santa Rosa
- Santana
{{#invoke:sorted plain list|descd|Santa Fe, Santa Rosa, Santana}}
→ - Santana
- Santa Rosa
- Santa Fe
{{#invoke:sorted plain list|asc|apples; oranges; bananas|;}}
→ - apples
- bananas
- oranges
{{#invoke:sorted plain list|desc|apples; oranges; bananas|;}}
→ - oranges
- bananas
- apples
{{#invoke:sorted plain list|asc|1,500,666; 200; 3,999; 0; -5|;|type=number}}
→ - -5
- 0
- 200
- 3,999
- 1,500,666
{{#invoke:sorted plain list|desc|1,500,666; 200; 3,999; 0; -5|;|type=number}}
→ - 1,500,666
- 3,999
- 200
- 0
- -5
{{#invoke:sorted plain list|asc|1,500,666; 200; 3,999; 0; -5; apples; oranges; bananas|;}}
→ - -5
- 0
- 1,500,666
- 200
- 3,999
- apples
- bananas
- oranges
{{#invoke:sorted plain list|desc|1,500,666; 200; 3,999; 0; -5; apples; oranges; bananas|;}}
→ - oranges
- bananas
- apples
- 3,999
- 200
- 1,500,666
- 0
- -5
{{#invoke:sorted plain list|asc|1,500,666; 200; 3,999; 0; -5; apples; oranges; bananas|;|type=number}}
→ - -5
- 0
- 200
- 3,999
- 1,500,666
- apples
- oranges
- bananas
{{#invoke:sorted plain list|desc|1,500,666; 200; 3,999; 0; -5; apples; oranges; bananas|;|type=number}}
→ - bananas
- apples
- oranges
- 1,500,666
- 3,999
- 200
- 0
- -5
{{#invoke:sorted plain list|ascd|District 1, District 8, District 10, District 11}}
→ - District 1
- District 8
- District 10
- District 11
{{#invoke:sorted plain list|descd|District 1, District 8, District 10, District 11}}
→ - District 11
- District 10
- District 8
- District 1
See also
-- This module generates a sorted plain list-- It was created as a modification of [[Module:Sort]]local p = {}local lang = mw.getContentLanguage()local ubl = require('Module:List').unbulletedlocal function transformstring(s)local a = mw.text.trim(s)a = mw.ustring.gsub(a, '%[%[[^%[%]<>|][^%[%]<>|]*|([^%[%]<>|][^%[%]<>|]*)%]%]', '%1')a = mw.ustring.gsub(a, '%[%[([^%[%]<>|][^%[%]<>|]*)%]%]', '%1')a = mw.ustring.gsub(a, '[%s%‑]', 'AA' )a = mw.ustring.gsub(a, '([%D])([%d])$', '%10%2')return aend-- This function was copied/modified from [[Module:Wikidata]]local function getValue(frame, propertyID)local entity = mw.wikibase.getEntityObject()local claimsif entity and entity.claims thenclaims = entity.claims[propertyID]endif claims then-- if wiki-linked value output as link if possibleif (claims[1] and claims[1].mainsnak.snaktype == "value" and claims[1].mainsnak.datavalue.type == "wikibase-entityid") thenlocal out = {}for k, v in pairs(claims) dolocal sitelink = mw.wikibase.sitelink("Q" .. v.mainsnak.datavalue.value["numeric-id"])local label = mw.wikibase.label("Q" .. v.mainsnak.datavalue.value["numeric-id"])if label == nil then label = "Q" .. v.mainsnak.datavalue.value["numeric-id"] endif sitelink thenout[#out + 1] = "[[" .. sitelink .. "|" .. label .. "]]"elseout[#out + 1] = labelendendreturn outelse-- just return best valuesreturn { entity:formatPropertyValues(propertyID).value }endelsereturn {""}endendfunction p.asc(frame) local items if frame.args.propertyID then items = getValue(frame, frame.args.propertyID) else items = mw.text.split( frame.args[1] or '', frame.args[2] or ',', true) end if (frame.args['type'] or '') == 'number' then table.sort( items, function (a, b) return ((lang:parseFormattedNumber(a) or math.huge) < (lang:parseFormattedNumber(b) or math.huge)) end ) else table.sort( items, function (a, b) return mw.text.trim(a) < mw.text.trim(b) end ) end return ubl(items)endfunction p.desc(frame) if frame.args.propertyID then items = getValue(frame, frame.args.propertyID) else items = mw.text.split( frame.args[1] or '', frame.args[2] or ',', true) end if (frame.args['type'] or '') == 'number' then table.sort( items, function (a, b) return ((lang:parseFormattedNumber(a) or math.huge) > (lang:parseFormattedNumber(b) or math.huge)) end ) else table.sort( items, function (a, b) return mw.text.trim(a) > mw.text.trim(b) end ) end return ubl(items)endfunction p.ascd(frame) local items if frame.args.propertyID then items = getValue(frame, frame.args.propertyID) else items = mw.text.split( frame.args[1] or '', frame.args[2] or ',', true) end if (frame.args['type'] or '') == 'number' then table.sort( items, function (a, b) return ((lang:parseFormattedNumber(a) or math.huge) < (lang:parseFormattedNumber(b) or math.huge)) end ) else table.sort( items, function (a, b) return ( transformstring(a) < transformstring(b) ) end) end return ubl(items)endfunction p.descd(frame) local items if frame.args.propertyID then items = getValue(frame, frame.args.propertyID) else items = mw.text.split( frame.args[1] or '', frame.args[2] or ',', true) end if (frame.args['type'] or '') == 'number' then table.sort( items, function (a, b) return ((lang:parseFormattedNumber(a) or math.huge) > (lang:parseFormattedNumber(b) or math.huge)) end ) else table.sort( items, function (a, b) return ( transformstring(a) > transformstring(b) ) end) end return ubl(items)endreturn p
🔥 Top keywords: Main PageSpecial:SearchWikipedia:Featured picturesYasukeHarrison ButkerRobert FicoBridgertonCleopatraDeaths in 2024Joyce VincentXXXTentacionHank AdamsIt Ends with UsYouTubeNew Caledonia2024 Indian general electionHeeramandiDarren DutchyshenSlovakiaKingdom of the Planet of the ApesAttempted assassination of Robert FicoLawrence WongBaby ReindeerXXX: Return of Xander CageThelma HoustonFuriosa: A Mad Max SagaMegalopolis (film)Richard GaddKepler's SupernovaWicked (musical)Sunil ChhetriXXX (2002 film)Ashley MadisonAnya Taylor-JoyPlanet of the ApesNava MauYoung SheldonPortal:Current eventsX-Men '97