Zum Inhalt springen

„Modul:AdressenSort“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
[gesichtete Version][gesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
Zwei Anregungen umgesetzt, danke an Herzi Pinki und PerfektesChaos!
K Kommentare angepasst
Zeile 4: Zeile 4:
-- lade Sort-Modul, um später Sonderzeichen umwandeln zu können
-- lade Sort-Modul, um später Sonderzeichen umwandeln zu können
local lucky, Sort = pcall( require, "Module:Sort" )
local lucky, Sort = pcall( require, "Module:Sort" )
-- lade Text-Modul, um Wiki-Syntax entfernen zu können
local happy, Text = pcall( require, "Module:Text" )
local happy, Text = pcall( require, "Module:Text" )
Sort = Sort.Sort()
Sort = Sort.Sort()
Text = Text.Text()
Text = Text.Text()
local hausnummer, sortadresse, strasse, ziffernzahl
local hausnummer, sortadresse, strasse, ziffernzahl
-- Lese Parameter
-- Lese Parameter und entferne sämtliche Wiki-Syntax
local rohadresse = Text.getPlain(frame.args[1])
local rohadresse = Text.getPlain(frame.args[1])
-- Entferne alle bis auf die erste Hausnummer einer Aufzählung
-- Ersetze eckige Klammern
local adresse = rohadresse:gsub(", %d*%a*",""):gsub(" bis %d*%a*", ""):gsub(" und %d*%a*", ""):gsub("/%d*%a*",""):gsub("; %d%a*", "")
local adresse = rohadresse:gsub(", %d*%a*",""):gsub(" bis %d*%a*", ""):gsub(" und %d*%a*", ""):gsub("/%d*%a*",""):gsub("; %d%a*", "")
-- Suche nach der Hausnummer; letztes Auftreten eines Ziffer-"Wortes"
-- Suche nach der Hausnummer = finde letztes Auftreten eines Ziffer-"Wortes"
strasse, hausnummer = mw.ustring.match(adresse, "^(.+) (%d[%-–/%d]*%a?)$")
strasse, hausnummer = mw.ustring.match(adresse, "^(.+) (%d[%-–/%d]*%a?)$")
if hausnummer then
if hausnummer then

Version vom 7. Februar 2016, 00:06 Uhr

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)
     -- lade Sort-Modul, um später Sonderzeichen umwandeln zu können
     local lucky, Sort = pcall( require, "Module:Sort" )
     -- lade Text-Modul, um Wiki-Syntax entfernen zu können
     local happy, Text = pcall( require, "Module:Text" )
     Sort = Sort.Sort()
     Text = Text.Text()
     local hausnummer, sortadresse, strasse, ziffernzahl
     -- Lese Parameter und entferne sämtliche Wiki-Syntax
     local rohadresse = Text.getPlain(frame.args[1])
     -- Entferne alle bis auf die erste Hausnummer einer Aufzählung
     local adresse = rohadresse:gsub(", %d*%a*",""):gsub(" bis %d*%a*", ""):gsub(" und %d*%a*", ""):gsub("/%d*%a*",""):gsub("; %d%a*", "")
     -- Suche nach der Hausnummer = finde letztes Auftreten eines Ziffer-"Wortes"
     strasse, hausnummer = mw.ustring.match(adresse, "^(.+) (%d[%-–/%d]*%a?)$")
    if hausnummer then
        -- Prüfe, ob die Nummer vom Format "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
        ziffernzahl = 0
        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
            ziffernzahl = mw.ustring.len(hausnummer)
        end
     end
     -- Ersetze Sonderzeichen usw.
     if hausnummer then
             sortadresse = Sort.lex(strasse, "latin") .. " " ..
                           mw.ustring.rep('0',5-ziffernzahl) .. hausnummer
     else
             sortadresse = Sort.lex(adresse, "latin")
     end
     -- Gebe den SortKey zurück
     return sortadresse
end
return p