Hej, du har kommit hit för att leta efter betydelsen av ordet
Modul:sort/dok. I DICTIOUS hittar du inte bara alla ordboksbetydelser av ordet
Modul:sort/dok, utan du får också veta mer om dess etymologi, dess egenskaper och hur man säger
Modul:sort/dok i singular och plural. Allt du behöver veta om ordet
Modul:sort/dok finns här. Definitionen av ordet
Modul:sort/dok hjälper dig att vara mer exakt och korrekt när du talar eller skriver dina texter. Genom att känna till definitionen av
Modul:sort/dok och andra ord berikar du ditt ordförråd och får tillgång till fler och bättre språkliga resurser.
Syfte
När sidor kategoriseras sorteras enligt standardalgoritmen för svenskspråkiga Wiktionary så sorteras de i en ordning som inte alltid stämmer överens med det aktuella språkets regler. Exempelvis sorteras ä och ö framför å, vilket blir fel för svenska. Olika språk har olika regler och dessa regler hämtas från Modul:lang som har dessa sorteringsregler och annan språkrelaterad information sparad i Modul:lang/data.
Användning
local sort = require("Modul:sort")
local sort_code = sort.getSortKey("sv", "sidnamnet")
Modulen används endast av andra moduler, och inte direkt från mallkoden. Mallar bör istället använda Modul:categorize för att skapa kategorier där sorteringsnyckeln är inkluderad.
Specifikation
Den textsträng som returneras är sidnamnet som skickas in, efter det att särskilda operationer utförts som delvis är beroende på språk.
- 1= språkkod (bör anges, annars tilldelas "xx" som språkkod)
- Språkkoden anges för att kunna använda sig av de speciella sorteringsregler som finns för det aktuella språket.
- Om språkkoden är "xx" används inga speciella sorteringsregler.
- Om språkkoden inte existerar blir resultatet samma som om språkkoden hade varit "xx".
- 2= sidnamnet (om utesluts eller lämnas tom, kommer textsträngen som returneras att vara tom).
- 1. Ett antal tecken plockas bort från textsträngen:
.,&!-/:"'$()*+\;=?~%
samt mellanrum.
- 2. Gör om hela textsträngen till gemener (vi vill att "A" ska sorteras på samma sätt som "a").
- 3. Ta bort alla diakriter enligt Modul:sort/data-diacritics. "å" görs om till "a", "é" görs om till "e" osv. Men hantera varje språks speciella regler. För svenska, t.ex., ska "å" inte göras om till "a" utan till "z~" (vilket betyder "sortera direkt efter "z").
- 4. Applicera en speciell algoritm på strängen så att inkluderade nummer sorteras i nummerordning, dvs. att 99 sorteras före 100. Detta görs genom att lägga till ett prefix framför numret med det antal ":"-tecken som är antalet siffror i talet.
- 5. Efter att ovanstående punkterna har gåtts igenom kan textsträngen returneras.
Tester
All tests passed. (refresh)
|
Text |
Expected |
Actual
|
test01_basic:
|
s.getSortKey("sv","abc") |
abc |
abc
|
|
s.getSortKey("sv","a b c") |
abc |
abc
|
|
s.getSortKey("fr","TV") |
tv |
tv
|
|
Text |
Expected |
Actual
|
test02_diacritics:
|
s.getSortKey("sv","åra") |
z~ra |
z~ra
|
|
s.getSortKey("en","åra") |
ara |
ara
|
|
s.getSortKey("sv","Åre") |
z~re |
z~re
|
|
s.getSortKey("fr","Åre") |
are |
are
|
|
s.getSortKey("","éüåäö") |
euaao |
euaao
|
|
s.getSortKey("xyz","éüåäö") |
euaao |
euaao
|
|
Text |
Expected |
Actual
|
test03_special_characters:
|
s.getSortKey("de","a.,-b") |
ab |
ab
|
|
s.getSortKey("","a.,-b") |
ab |
ab
|
|
s.getSortKey("xx","a.,-b") |
ab |
ab
|
|
s.getSortKey("xx","a&b") |
ab |
ab
|
|
Text |
Expected |
Actual
|
test04_missing_pagename:
|
s.getSortKey("sv") |
|
|
|
s.getSortKey("sv","") |
|
|
|
Text |
Expected |
Actual
|
test05_bad_language_code:
|
s.getSortKey(nil,"é.,-b") |
eb |
eb
|
|
s.getSortKey("","é.,-b") |
eb |
eb
|
|
s.getSortKey("xx","é.,-b") |
eb |
eb
|
|
s.getSortKey("xyz","é.,-b") |
eb |
eb
|
|
Text |
Expected |
Actual
|
test06_numbers_basic:
|
s.getSortKey("sv","33") |
::33 |
::33
|
|
s.getSortKey("sv","ab33cd") |
ab::33cd |
ab::33cd
|
|
Text |
Expected |
Actual
|
test07_numbers_with_special_characters:
|
s.getSortKey("sv","1,2-etandiol") |
::12etandiol |
::12etandiol
|
|
s.getSortKey("sv","1,2,3-propantriol") |
:::123propantriol |
:::123propantriol
|
|
Text |
Expected |
Actual
|
test08_numbers_multiple_occurances:
|
s.getSortKey("sv","ab33cd9988ef") |
ab::33cd::::9988ef |
ab::33cd::::9988ef
|
|
s.getSortKey("sv","ab0033cd09900ef") |
ab::33cd::::9900ef |
ab::33cd::::9900ef
|
|
Text |
Expected |
Actual
|
test09_dont_mess_up_non_latin:
|
s.getSortKey("zh", "中世紀") |
中世紀 |
中世紀
|