Zum Inhalt springen

Modul:AdressenSort

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 23. März 2013 um 21:16 Uhr durch Cirdan (Diskussion | Beiträge) (typo 2). Sie kann sich erheblich von der aktuellen Version unterscheiden.
Vorlagenprogrammierung Diskussionen Lua Unterseiten
Modul Deutsch

Modul: Dokumentation

Diese Seite enthält Code in der Programmiersprache Lua. Einbindungszahl Cirrus


local p = {} 
function p.convert(frame)
     -- Lese Parameter
     local adresse = frame.args[1]
     -- Ermittle die Gesamtlänge des Strings
     local adresslaenge = mw.ustring.len(adresse)
     -- Finde heraus, wo die Hausnummer beginnt (=erstes Auftreten einer Ziffer)
     local nummernstart = mw.ustring.find(adresse, '%d')
     -- Extrahiere den Straßennamen
     local strasse = mw.ustring.sub(adresse,1,nummernstart-1)
     -- Extrahiere die Hausnummer
     local hausnummer = mw.ustring.sub(adresse,nummernstart,adresslaenge)
     -- Prüfe, ob die Nummer vom Format "10-12" oder "10/12" ist
     local punctuation = mw.ustring.find(hausnummer,'%p')
     -- Prüfe, ob die Nummer vom Format "10a" ist
     local alpha = mw.ustring.find(hausnummer,'%a')
     -- Werte das aus und reduziere ggf. die beachtete Ziffernzahl
     if punctuation then
        ziffernzahl = punctuation - 1
        -- Falls zuerst ein Buchstabe kommt
        if alpha and (alpha-punctuation < 0) then
            ziffernzahl = alpha - 1
        end
     elseif alpha then
        ziffernzahl = alpha - 1
        -- Falls zuerst ein Satzzeichen kommt
        if punctuation and (punctuation-alpha < 0) then
            ziffernzahl = punctuation - 1
        end
     else
        -- Wenn es keine Spezialfälle gibt, bestimme einfach die Länge
        local ziffernzahl = mw.ustring.len(hausnummer)
     end
     -- Gebe den SortKey zurück, ergänze dabei die Hausnummer mit 0en auf 5 Stellen
     -- und normalisiere den Straßennamen
     return mw.ustring.toNFD(strasse) .. mw.ustring.rep('0',5-ziffernzahl) .. hausnummer
end 
return p