Wikipedia Diskussion:Lua/Modul/AdressenSort
Vorlagenprogrammierung | Diskussionen | Lua | Unterseiten | ||
Modul | Deutsch
|
Modul: | Dokumentation |
Feedback
BearbeitenGute Idee, aber das Beispiel mit Weg am Friedhof ist nicht überzeugend. Aus Sicht des Benutzers kann nur der sichtbare Teil (d.h. Weg am Friedhof) für die Sortierung der Adresse beitragen. Niemand würde das unter F suchen. Man sollte generell alle Links entfernen, bevor die Adresse mit führenden Nullen aufgeblasen wird. lg --Herzi Pinki (Diskussion) 16:06, 18. Mär. 2015 (CET)
- @Herzi Pinki: Danke für den Hinweis, das Beispiel ist auch aus diversen anderen Gründen blöd. Untendrunter steht jetzt eine schönere Tabelle.--Cirdan ± 21:56, 6. Feb. 2016 (CET)
- @Cirdan:, danke für die Erinnerung und die Umsetzung. Ich hätte zu deinem Test noch drei Anmerkungen und eine Bitte:
- O2-Platz 4 - Osub2sub-Platz00000004 - besser ohne sub: O2-Platz00000004 (alle tags raus, weil für den Benutzer nicht sichtbar, detto eventuelle <ref>s am Ende entfernen.)
- bei Hulsenstrasse00000034b würde ich das 'b' weglassen, d.h. alles was nach dem Trenner kommt (, / bis - ), führt so sicher zu irgendwelchen unerwarteten Sortierungen
- Aufblasen auf 8 numerische Stellen ist großzügig (kommen Hausnummern > 9999 vor?), mE würden 5 auch reichen.
- wenn du eine vorgestellte Ortspräposition wie 'vor', 'neben', 'bei', 'hinter', 'zwischen' (ev. käme da noch was) ignorieren könntest, würde das den Wert der Funktion nochmals erhöhen.
- lg --Herzi Pinki (Diskussion) 22:15, 6. Feb. 2016 (CET)
- @Herzi Pinki: Das „sub“ rauszunehmen macht die Programmierung deutlich komplizierter und hat kaum einen Effekt. In den seltenen Fällen, wo ein Tag innerhalb des Straßennamens vorkommt, wird dann ggf. die Straße falsch einsortiert, innerhalb der Straße hat es aber keinerlei Einfluss. Daher würde ich hier warten, bis irgendwann ein Lua-Modul verfügbar ist, das konsequent und komplett Wiki-Markup entfernt.
- Die Buchstaben nach den Zahlen habe ich absichtlich drin gelassen,
weil es sonst zu Problemen kommt, wenn die Hülstenstraße 3a und die Hülsenstraße 3b beide in einer Liste auftauchen. Die müssen ja trotzdem richtig sortiert werden.Ich sehe was du meinst. Es wird immer nach der ersten auftretenden Hausnummer sortiert, Trennzeichen schneide ich (wie man in der Tabelle sieht) schon ab. Allerdings gibt es dort sehr kreative Lösungen wie zum Beispiel ein Semikolon als Trenner, das werde ich nach und nach ergänzen, wenn es auffällt. - Die vorgestellten Präpositionen kann ich denke ich realisieren, da muss ich aber erst nochmal ein bisschen überlegen und herumspielen. Einfache Lösungen wie „alles bis zum ersten Großbuchstaben abschneiden“ scheitern an häufigen Verwendungen von „ohne Anschrift“ oder „außerhalb der Ortslage“, die dann falsch einsortiert würden. Aber ich denke, da findet sich eine Lösung.--Cirdan ± 22:23, 6. Feb. 2016 (CET)
- @Cirdan:, danke für die Erinnerung und die Umsetzung. Ich hätte zu deinem Test noch drei Anmerkungen und eine Bitte:
- „Daher würde ich hier warten, bis irgendwann ein Lua-Modul verfügbar ist, das konsequent und komplett Wiki-Markup entfernt.“
- Wikipedia:Lua/Modul/Text/de #getPlain
- Wie man eine Bibliothek einbindet, weißt du ja jetzt.
- Alternativ kann man auch mit C&P die Funktion mopsen.
- Persönlich würde ich grundsätzlich zwischen Straßennname und Hausnummer ein Leerzeichen setzen, und sei es zur besseren optischen Kontrolle.
- „Daher würde ich hier warten, bis irgendwann ein Lua-Modul verfügbar ist, das konsequent und komplett Wiki-Markup entfernt.“
- LG --PerfektesChaos 22:52, 6. Feb. 2016 (CET)
- @PerfektesChaos, Herzi Pinki: Danke euch beiden, ich habe jetzt die Anregungen umgesetzt. Ref-Tags am Ende sollten keine Probleme machen, aber zumindest in Denkmallisten ohnehin nicht auftreten.--23:03, 6. Feb. 2016 (CET)
@PerfektesChaos: getPlain macht bei Links Schwierigkeiten: {{#invoke:Text|getPlain|[[Bundesplatz]]}}
→ Bundesplatz. Ist das gewollt oder ein Fehler? (Ich habe jetzt, da das natürlich diverse Listen zerschießt, zusätzlich noch die alte Methode wieder eingebaut.--Cirdan ± 15:44, 8. Feb. 2016 (CET)
- Text #getPlain sagt explizit: „Entferne Wikisyntax (ausgenommen Vorlagen): Kommentare, Tags, Kursiv-/Fettschrift, nbsp“
- Wir hätten aber auch noch:
- WLink #getPlain – „Löse alle Verlinkungen im Text auf und ersetze durch die Linktitel“.
- Das sind zwei verschiedene Aufgaben; kann ja sein, dass man den Original-Text haben möchte, bloß ohne Verlinkungseigenschaft; oder mit Verlinkung, aber ohne Markup und Kommentare.
- Wenn du sowieso den Fehlerfall (kaputte Bibliothek) nicht abfängst, was zugegebenermaßen kaum Konsequenzen hat, wenn man das Resultat unsichtbar in einem Sortierschlüssel verschwinden lässt, dann braucht es auch weder
pcall()
noch lucky noch happy.- Dann hättest du initialisierte Bibliotheken bereits nach den folgenden Anweisungen:
local Sort = require( "Module:Sort" ).Sort()
local Text = require( "Module:Text" ).Text()
local WLink = require( "Module:WLink" ).WLink()
- LG --PerfektesChaos 22:48, 9. Feb. 2016 (CET)
- @PerfektesChaos: Vielen Dank für die ausführliche Erklärung, ich habe das jetzt so umgesetzt. (Jetzt sehen die Moduleinbindungen auch eher so aus, wie ich das gewohnt bin.) Damit ist auch direkt der Wunsch von Herzi Pinki umgesetzt, nur den sichtbaren Teil des Links anzuzeigen.--Cirdan ± 22:59, 9. Feb. 2016 (CET)
Test
BearbeitenMüllerstraße
|
Mullerstrasse
|
Zeil 48
|
Zeil 00048
|
Straße des 17. Juni 135
|
Strasse des 17. Juni 00135
|
Königsstraße 17c
|
Konigsstrasse 00017c
|
Ringstraße (West) 99
|
Ringstrasse (West) 00099
|
Bundesplatz
|
Bundesplatz
|
O2-Platz 4
|
O2-Platz 00004
|
Hülsenstraße 34, 35b
|
Hulsenstrasse 00034
|
Kanalstraße 12/14d/16 = |
Kanalstrasse 00012
|
Steinweg 8c bis 24
|
Steinweg 00008c
|
Hackländerstraße 4, 5f und 12
|
Hacklanderstrasse 00004
|
Downing Street No. 10
|
Downing Street No. 00010
|
Gumpendorfer Straße 109 / Kurt Pint-Platz
|
Gumpendorfer Strasse 00109
|
Gumpendorfer Straße 54 (Altbau)
|
Gumpendorfer Strasse 00054
|
Gumpendorfer Straße 54 (ident mit Blümelgasse 1 )
|
Gumpendorfer Strasse 00054
|
Gern geschehn …
Bearbeiten… aber eine klein Panne ist noch drin, oder der Kommentar passt nach den Löschungen nicht mehr:
-- Module:Sort ist irgendwie putt. Dann halt ohne.
Das stand als Alternativlösung in einer Abfrage, ob Sort
eine table sei, und falls nicht, dann wurde auf deinen bisherigen Code zurückgegriffen.
2 Problemfälle
BearbeitenHallo, mir sind zwei Problemfälle über den Weg gelaufen:
{{#invoke:AdressenSort|convert|1=Gumpendorfer Straße 54 (ident mit Blümelgasse 1)}}: | Gumpendorfer Strasse 00054 |
{{#invoke:AdressenSort|convert|Gumpendorfer Straße 109 / Kurt Pint-Platz}}: | Gumpendorfer Strasse 00109 |
{{#invoke:AdressenSort|convert|Ringstraße (West) 99}}: | Ringstrasse (West) 00099 |
Lösungsvorschlag:
- alle Klammern hinter Ziffern können ignoriert werden. Das hilft beim Beispiel Ringstraße (West) 99 (Klammer vor Ziffer, Klammer wird nicht ignoriert), löst obigen Fall 1. Ein neues Problem allerdings wäre dann Straße des 17. Mai (West) 99 - falls es sowas gibt.
- alles hinter / kann ignoriert werden. Entweder ist das ein Zusatz, eine alternative Identadresse / Eckadresse, oder eine Hausnummer nach dem Schema 5/6. Löst obigen Fall 2. / sollte im Straßennamen mE nicht vorkommen.
statt
local adresse = rohadresse
:gsub(", %d*%a*",""):gsub(" bis %d*%a*", ""):gsub(" und %d*%a*", ""):gsub("/%d*%a*",""):gsub("; %d%a*", "")
müsste es dann heißen:
local adresse = rohadresse:gsub("/.*",""):gsub("(%d.*)%(.*%)","%1")
:gsub(", %d*%a*",""):gsub(" bis %d*%a*", ""):gsub(" und %d*%a*", ""):gsub("; %d%a*", "")
Bitte um Mitdenken und Korrekturen. lg --Herzi Pinki (Diskussion) 20:23, 15. Mär. 2017 (CET)
- @Herzi Pinki: Den ersten Fall habe ich eingebaut (siehe Test-Tabelle oben), den zweiten Fall bekomme ich nicht hin.--Cirdan ± 13:51, 2. Sep. 2017 (CEST)
- Hat doch geklappt, jetzt werden deine Fälle auch korrekt bearbeitet.--Cirdan ± 14:04, 2. Sep. 2017 (CEST)
- Merci vielmals --Herzi Pinki (Diskussion) 17:01, 2. Sep. 2017 (CEST)
- Hat doch geklappt, jetzt werden deine Fälle auch korrekt bearbeitet.--Cirdan ± 14:04, 2. Sep. 2017 (CEST)