Module:RetroKey

Uit WikiWoordenboek


Doel[bewerken]

Deze module maakt van de paginanaam een sorteersleutel voor een Nederlandse retrograad, een woordenlijst waarin elk woord van achter naar voren is gealfabetiseerd. Een uitvoerige, minder technische beschrijving staat op WikiWoordenboek:Retrograad

Parameters[bewerken]

Er zijn geen parameters; deze module haalt de paginanaam direct op.

Gebruik[bewerken]

Maak een verborgen categorie <Retrograadnaam> aan en vermeld op de pagina's van de woorden die in de lijst moeten komen:

[[Categorie:<Retrograadnaam>|{{#invoke:RetroKey | main}}]].

De categorie <Retrograadnaam> bevat dan de gewenste lijst.

Omdat de sleutel voor de lezer van de pagina geen nuttige informatie bevat, behoort een verborgen categorie gebruikt te worden. Als er al een sjabloon is dat alleen op de gewenste pagina's staat, is het handig om de categorievermelding in dat sjabloon te verwerken. Afhankelijk van het aantal pagina's kan het even duren voordat de retrograad is bijgewerkt.

Deze module wordt gebruikt om de Categorie:Retrograad van het Nederlands te maken.

Werking[bewerken]

De sleutel bestaat uit twee delen, key1 en key2, gescheiden door een spatie. De sortering vindt in eerste instantie plaats op key1, de paginanaam waaruit spaties, interpunctietekens en diakrieten zijn verwijderd; dit in navolging van de bestaande gedrukte retrograden van het Nederlands. Omdat verschillend gespelde woorden zo dezelfde key1 kunnen krijgen is hieraan key2 toegevoegd: de oorspronkelijke paginanaam waarin eventuele hoofdletters zijn vervangen door een "apenstaart" (@). Dit laatste is gedaan omdat de Mediawikiprogrammatuur hoofdletters in sorteersleutels automatisch vervangt door kleine letters: key2 zorgt er nu ook voor dat in de retrograad een woord met een hoofdletter voorafgaat aan hetzelfde woord met een kleine letter.


local chars = {
 [" "] = "", ["!"] = "", ["'"] = "", ["+"] = "", [","] = "", ["-"] = "",  
 ["."] = "",  ["/"] = "", ["?"] = "",    
 ["á"] = "a",  ["à"] = "a",  ["â"] = "a",  ["ä"] = "a",  ["ã"] = "a",  ["å"] = "a",
 ["ç"] = "c",
 ["é"] = "e", ["è"] = "e", ["ê"] = "e", ["ë"] = "e",
 ["í"] = "i", ["î"] = "i", ["ï"] = "i",
 ["ñ"] = "n",
 ["ó"] = "o", ["ô"] = "o", ["ö"] = "o", ["ø"] = "o",
 ["ú"] = "u", ["ù"] = "u", ["û"] = "u", ["ü"] = "u",
}
local p = {}
function p.main()
  local title = mw.title.getCurrentTitle()
  local key1 = title.text
  local key2 = mw.ustring.lower(title.text)
  key1 = mw.ustring.gsub(key1, '(%u)', '@' )
  key2 = mw.ustring.gsub(key2, '.', chars)
  key2 = key1 .. " " .. key2
  local bound = mw.ustring.len( key2 )
  local retro = mw.ustring.char( mw.ustring.codepoint( key2 , bound) )
  i = 1
  while i < bound do
    retro = retro .. mw.ustring.char( mw.ustring.codepoint( key2 , bound - i ) )
    i = i + 1
  end
  return retro
end
return p