Wikipedia:Lua/Werkstatt/Archiv/2014

Letzter Kommentar: vor 6 Jahren von Antonsusi in Abschnitt Sortierung in Tabellen per Modul

Lua in anderem Wiki

Hallo miteinander, wer kann mir bei einer Lua Installation in einem anderen Wiki helfen. Folgende Situation:

Im http://regiowiki.at (Version 1.22.0) habe ich vor 14 Tagen LUA installiert, das sind mir Vorlagen auf einen Scriptfehler aufgelaufen. Jetzt habe die Lua version auf ganz aktuell gestellt. Allerdings schmiert das Wiki ganz ab. Kann es sein dass Scribunto-refs/heads/mastertar.gz mit 1.22.0 nicht mehr kompatibel ist. WEnn du nichts weißt, vielleicht kannst du mir jemanden nennen, der sich da noch auskennt.

Interner Fehler

[2e719b73] /index.php?title=Hauptseite Exception from line 212 of /home/regiowiki/public_html/includes/Hooks.php: Detected bug in an extension! Hook ScribuntoHooks::formatLimitData has invalid call signature; Parameter 2 to ScribuntoHooks::formatLimitData() expected to be a reference, value given

Backtrace:

#0 /home/regiowiki/public_html/includes/GlobalFunctions.php(3877): Hooks::run(string, array)
#1 /home/regiowiki/public_html/includes/parser/Parser.php(545): wfRunHooks(string, array)
#2 /home/regiowiki/public_html/includes/content/WikitextContent.php(300): Parser->parse(string, Title, ParserOptions, boolean, boolean, integer)
#3 /home/regiowiki/public_html/includes/WikiPage.php(3539): WikitextContent->getParserOutput(Title, integer, ParserOptions)
#4 /home/regiowiki/public_html/includes/PoolCounter.php(222): PoolWorkArticleView->doWork()
#5 /home/regiowiki/public_html/includes/Article.php(708): PoolCounterWork->execute()
#6 /home/regiowiki/public_html/includes/actions/ViewAction.php(44): Article->view()
#7 /home/regiowiki/public_html/includes/Wiki.php(448): ViewAction->show()
#8 /home/regiowiki/public_html/includes/Wiki.php(312): MediaWiki->performAction(Article, Title)
#9 /home/regiowiki/public_html/includes/Wiki.php(602): MediaWiki->performRequest()
#10 /home/regiowiki/public_html/includes/Wiki.php(467): MediaWiki->main()
#11 /home/regiowiki/public_html/index.php(49): MediaWiki->run()
#12 {main}

Vielleicht kann mir da wer für das http://regiowiki.at weiterhelfen - danke K@rl 19:10, 5. Apr. 2014 (CEST)

Wie eben schon auf BD:Entlinkt:
  • Die jetzt aktuelle MW-Version von Lua dürfte für das regiowiki.at zu frisch und inkompatibel sein; deswegen passt der Funktionsaufruf im System nicht zusammen.
  • Zurück auf den Zustand von vor 14 Tagen und dann die „Einrichtung der ersten Version“ wiederherstellen.
  • Dass es da irgendwo „Skripterror“ gab, hat völlig andere Ursachen; im Zweifelsfall fehlende Module oder Konfigurationskram. Sowas haben wir hier auch.
  • Probiere dann zunächst mal nur das Modul:Hello bzw. euer Benutzer:Gerold_Broser/Modul:LuaHelloWorld. Das sollte laufen.
  • Danach können wir gucken, warum was auf irgendeiner speziellen Seite nicht ging.
LG --PerfektesChaos 19:58, 5. Apr. 2014 (CEST)
Erstmals einen Fehler habe ich gefunden,denn ich habe eine falsche Erweiterung als die aktuelle runtergeladen - jetzt schaut es schon viel besser aus. Nur das Benutzer:Gerold_Broser/Modul:LuaHelloWorld läuft noch nicht aber schon nicht nur einen Schritt sondern Kilometer weiter ;-) --K@rl 20:04, 5. Apr. 2014 (CEST)
Zweiter Fehler auch gefunden. Modul darf nur in Modul: sitzen - eh klar und nicht in eigener Unterseite ;-) --K@rl 20:21, 5. Apr. 2014 (CEST)

Auf alle Fälle - es ist positiv erledigt und danke --gruß K@rl 20:21, 5. Apr. 2014 (CEST)

Archivierung dieses Abschnittes wurde gewünscht von: K@rl 20:21, 5. Apr. 2014 (CEST)
Nach BK würde ich gern noch meine Antwort loswerden:
Na, dann tu die mal unter euren Modul-Namensraum.
Syntaktisch ist das Modul in Ordnung; aber es ist vermutlich vom Seiteninhaltsmodell wikitext und nicht Scribunto. Euer 22er ist aber wohl noch nicht so weit, dass das in den Seiteninformationen angezeigt werden würde.
Benutzer-Unterseiten kann man auch als Lua-Modul ausführen; aber dazu müsste alles gemäß Hilfe:Vorlagenspielwiese #Spielwiesenpräfix konfiguriert sein. Weiß ich nicht, wie weit ihr damit seid.
Weil aber Benutzer:Gerold Broser/Modul:LuaHelloWorld eine ganz normale Wikitext-Seite ist und kein Scribunto, gibt es einen „Skriptfehler“, weil nur Scribunto mit #invoke ausgeführt werden kann. Alles im Modul-Namensraum ist erstmal Scribunto.
Viel Erfolg --PerfektesChaos 20:28, 5. Apr. 2014 (CEST)

URLs

Hallo,

Bei WP:FzW ist die Frage aufgekommen, ob man mit Lua eine Vorlage erstellen könnte, die http:// falls notwendig zu URLs wie beispiel.com/irgendwas hinzufügen könnte. Grüße sitic (Diskussion) 10:20, 4. Dez. 2014 (CET)

Das geht auch jetzt schon: {{#if:{{str match|{{{url}}}|^https?://}}|{{{url}}}|http://{{{url}}}}}, was überprüft ob der übergebene Paramater url mit http:// oder https:// anfängt und falls ja ausgibt, bzw. falls nein ein http:// davor ergänzt. --Mps、かみまみたDisk. 13:01, 4. Dez. 2014 (CET)
Danke, ich hatte {{Str match}} komplett übersehen. Grüße sitic (Diskussion) 14:46, 4. Dez. 2014 (CET)
Archivierung dieses Abschnittes wurde gewünscht von: sitic (Diskussion) 14:46, 4. Dez. 2014 (CET)

Vorlage mit Modul im BNR abspeichern

Hallo Modulexperten, ich bin noch blutiger Anfänger in sachen Modulprogrammierung und hab mal ein paar anfänge für eine Vorlage in meinem BNR gemacht. Jetzt habe ich ein Problem: Diese Vorlage soll komplett über ein Modul funktionieren, welches ich auch in meinem BNR abspeichern will. Hier mal die Links zu meinen bisherigen Ergebnissen:

Eine kurze Erklärung noch was die Vorlage können soll: Ich will in die Vorlage die Namen verschiedener Vereine einer Liga eintragen. Die Ergebnisse bei Wettkämpfen gegeneinander, die ebenfalls dort eingetragen werden, soll dann ein Modul auswerten und daraus eine Tabelle erstellen. Meine Frage: Wo kann ich das dazugehörige Modul in meinem BNR unterbringen? --Korrektor123 (Diskussion) 12:00, 22. Apr. 2014 (CEST)

Unter Wikipedia:Lua#Erprobung steht was dazu.--79.228.205.11 12:02, 22. Apr. 2014 (CEST)

Danke für die schnelle Antwort. Jetzt ist noch eine Frage dazu gekommen: Was schreibe ich in meine Vorlage, dass sie weiß, dass sie über dieses eine Modul angesteuert werden soll. Ist da mein Inhalt der Vorlage vielleicht schon richtig? --Korrektor123 (Diskussion) 12:08, 22. Apr. 2014 (CEST)

Da gibt's Infos unter Hilfe:Lua/Modul im Wiki#Schnittstelle zur Vorlagenprogrammierung.--79.228.205.11 12:12, 22. Apr. 2014 (CEST)

Also, wie schon gesagt, ich bin neu auf diesem Gebiet. Ich verstehe diese Seite jetzt so: ich muss sämtliche Werte die auf meiner Doku-Seite verlangt werden in die Vorlage über {{#invoke:M|f|1=ABC|FGH| LMN |benanntA=PQR|benanntB= TUV | HÖHE ÜBER NN= 32 | Leergut= }} einbringen, damit ich sie im Modul über frame.args[ ] auslesen kann. --Korrektor123 (Diskussion) 12:19, 22. Apr. 2014 (CEST)

Hmm ... so genau kenne ich das auch noch nicht. Aber es gibt ein Modul:DemoArgs, das das Thema wohl behandelt.--79.228.205.11 12:26, 22. Apr. 2014 (CEST)

So. Ich hab mal ein Modul erstellt (noch unvollständig). In meiner Vorlage steht jetzt allerdings immernoch "Skriptfehler". Wenn ich aber beim Modul auf Vorschau der Seite mit dieser Vorlage anzeigen gehe, funktioniert alles einwandfrei. Wieso glaubt dann die Vorlage immernoch einen "Skriptfehler" zu haben???

Hallo erstmal,
nett, dass sich jemand für dieses Nischenthema interessiert.
Skriptfehler sehe ich momentan bei dir nicht mehr.
Zwei Tipps hätte ich für dich:
  1. Die Parameter kannst du eleganter aus der umgebenden Vorlage in das Modul hereinholen, indem du nach frame:getParent().args fragst.
    • Schau mal, wie die Vorlage:Max sich ihre 4711 möglichen Parameter abholt, und wie schlicht sie programmiert ist.
  2. Die 10 Teams würde ich in einer table anordnen und nicht in 10 einzelnen Variablen. Dann kannst du auch mit einer Schleife von 1 bis 10 durchbrausen.
    • Mit einer solchen Schleife von i = 1 bis 10 kannst du auch auf alle Werte zugreifen; also frame.args['Team'..i]
Viel Spaß --PerfektesChaos 17:39, 22. Apr. 2014 (CEST)

Ich Persönlich sehe in meinem Modul auch keinen Skriptfehler, aber wenn du dir diese Seite mal anschaust, steht gleich ganz oben und auch unten bei "So sieht's aus" in roter schrift "Skriptfehler". Wenn ich den Fehler anklicke heißt es: "Skriptfehler: Ein solches Modul ist nicht vorhanden". Jetzt zu deinem ersten Tipp: Hier bräuchte ich ein Beispiel wie man frame:getParent().args anwendet, ich weiß nämlich im Moment noch nicht so ganz, wie ich dann einen bestimmten wert aus meiner Doku auslesen kann. Das selbe gilt für zweitens frame.args['Team'..i]. Auch hier nützt mir ein Beispiel wahrscheinlich mehr als nur zu wissen, dass es mit dieser Funktion geht. --Korrektor123 (Diskussion) 18:11, 22. Apr. 2014 (CEST)

  • Ich sehe da keinen roten Skriptfehler, aber die /Doku dazu hatte mal einen. Ich habe ihn gerade weggehext; in Hilfe:Cache steht, wie das geht. War noch ein nicht aktualisierter Überrest deiner ersten Gehversuche.
  • Schreib einfach statt frame.args das frame:getParent().args hin; dann werden die Parameter aus der Vorlageneinbindung gelesen, und du kannst sie in der Vorlage löschen. Dann ist die Vorlagenprogrammierung genauso winzig wie die Vorlage:Max. Das erspart es dir, die Vorlage auch noch aktuell zu halten; sie liefert nur ein hübscheres Aussehen im Artikeltext und eine normale Dokuseite.
  • Zwei Zeichenketten werden verknüpft durch .. und Zeichenkette mit Zahl geht notfalls auch. 'Team'..i ist dann der Reihe nach 'Team1' und 'Team2' und 'Team3', wenn du i in einer Schleife laufen lässt.
Hoffe geholfen zu haben --PerfektesChaos 18:31, 22. Apr. 2014 (CEST)

Danke für die Tipps hab ich jetzt auch schon (teilweise) umgesetzt. Jetzt habe ich noch ein kleines Problem: Ich müsste einen Eingabewert aus meiner Doku in kleinere Teile aufteilen können. Beispiel: Mein Eingabewert 9:0,18:0,99:23 Erstmal müsste ich den Wert bei jedem Komma aufteilen und in drei Stringvariablen zwischenspeichern und anschließend müsste noch jede der einzelnen Variablen am Doppelpunkt geteilt werden, so dass zum Schluss praktisch nur noch Zahlen übrig bleiben, mit denen ich dann weiter rechene. Geht das irgendwie? --Korrektor123 (Diskussion) 10:36, 23. Apr. 2014 (CEST)

Geht komfortabel: Hilfe:Lua/Zeichenketten #mw.text.split()
Allgemein würde ich anempfehlen, mal die Linkbox auf dieser Hilfeseite oberflächlich durchzuschmökern und grob die Themen zur Kenntnis zu nehmen.
Viel Erfolg --PerfektesChaos 14:56, 23. Apr. 2014 (CEST)

Ich hab schon viele Dinge gefunden, die ich vielleicht später noch brauchen werde. Jetzt aber noch eine (wahrscheinlich letzte) Frage: Wie kann ich die Werte, die mir die Funktion mw.text.split() in Tabellenform ausgibt in verschiedene Strings abspeichern, damit ich diese einzeln weiterverarbeiten kann? --Korrektor123 (Diskussion) 17:24, 23. Apr. 2014 (CEST) Hat sich erledigt bin selbst auf einen grünen Zweig gekommen. Und nochmals DANKE für die Unterstützung. --Korrektor123 (Diskussion) 11:29, 24. Apr. 2014 (CEST)
Einen Fehler hab ich dann doch noch: in meiner While-Schleife muss irgendwo ein Skriptfehler drin sein, sobald ich die Schleife auskommentiere und das ganze Modul nur einmal durchlaufen lasse, funktioniert es wunderbar. Nur mit der Schleife stimmt irgendetwas nicht.--Korrektor123 (Diskussion) 11:53, 24. Apr. 2014 (CEST)

  • Syntaktisch ist der Quellcode erstmal okay; sonst hättest du ihn auch nicht abgespeichert bekommen.
  • Tipp_1: Hilfe:Lua/Quellcode und Vorschau #Konsole und mw.log()
  • Tipp_2: Du scheinst grad die table für dich entdeckt zu haben; das heißt, aus Team5Punkte wird gelegentlich TeamPunkte[5] oder wie?
Enjoy --PerfektesChaos 12:18, 24. Apr. 2014 (CEST)

Auch die Konsole hat mir keinen Fehler ausgespuckt, es hat sich allerdings eine Vermutung von mir bestätigt: Das Programm hat Probleme, wenn es Variablen mit dem Wert nil oder "". Ich hab jetzt eine andere Schleife für die Überprüfung auf solche Werte vorangestellt. Funktioniert jetzt einwandfrei. Die Stelle mit TeamPunkte[5] die du da gefunden hast, könntest du sie mir mal zeigen, ich find sie nämlich selbst nicht und könnte mich auch nicht daran erinnern eine solche table verwendet zu haben. --Korrektor123 (Diskussion) 10:07, 25. Apr. 2014 (CEST)

Du konntest keine solche Stelle finden; es ist eine Anregung von mir, mit dem weiteren Fortschreiten der Erkenntnisse solche table als Array, mehrdimensionales Array oder auch mit Objekten bevölkert zu verwenden: teamdaten[5].Punkte würde es dir ermöglichen, eine numerische Schleife i über alle n-zig teamdaten[i] laufen zu lassen; zu jedem Team gäbe es ein Objekt, dessen eine Komponente vielleicht .Punkte heißen mag. Im Moment verwendest du lauter Einzelvariablen, was dich in der Flexibilität und weiteren Entwicklung vielleicht einschränken würde. VG --PerfektesChaos 11:01, 25. Apr. 2014 (CEST)

Das mit den mehrdimensionalen Arrays ist keine schlechte Idee, gibt es da auch eine funktion wie table.sort() mit dem man die komplette Array sortieren kann. Wenn ich das Array sortiere, dass dann auch die Teamnamen entsprechend mitsortiert werden? --Korrektor123 (Diskussion) 09:09, 26. Apr. 2014 (CEST)

Natürlich ist das keine schlechte Idee, schließlich ist sie ja von mir.
Eine solche Sortierfunkton gibt es; sie heißt auch genau so:
table.sort( teamdaten [, compare])
Dabei ist compare eine optionale Sortierfunktion, die du hier brauchen wirst.
Angenommen, alle Teamdaten des Teams mit der Nummer i stünden im Array als td[i] = { Name="theWinners", Punkte=123 } und somit als Objekt, dann muss compareTeamNames(a,b) zurückliefern: true wenn a lexikalisch kleiner b, also return ( a.Name < b.Name ) oder edler return ( string.upper(a.Name) < string.upper(b.Name) ) und ansonsten eben false – was der return-Ausdruck ebenfalls macht. Dann flutscht tdsort = table.sort(td, compareTeamNames) wie gewünscht.
VG --PerfektesChaos 22:45, 26. Apr. 2014 (CEST)

Wenn ich das richtig verstehe, muss die Funktion einfach nur meinen Wünschen entsprechend true oder false zurück geben, oder? --Korrektor123 (Diskussion) 15:13, 28. Apr. 2014 (CEST)

Ja.
Wobei du vermutlich begehrst, Umlaute richtig zu sortieren; dann würde ich zunächst Wikipedia:Lua/Modul/Sort/de #.lex() über den jeweiligen Namen schicken; dann alle einzelnen Leerzeichen durch nichts ersetzen, sofern sie nicht bedeutungstragend sein sollen; schließlich alles string.upper() und was dabei herauskommt vergleichen.
Dafür würde sich eine Funktion MachSortkey(s) oder sowas empfehlen, die auf das a- und b-Element angewendet wird.
VG --PerfektesChaos 15:48, 28. Apr. 2014 (CEST)

Einen Moment bitte, ich weiß nicht ob du mich richtig verstanden hast, ich möchte meine Tabelle nicht nach Alphabet sortieren, sondern nach den Punkten. --Korrektor123 (Diskussion) 15:51, 28. Apr. 2014 (CEST)

Ah, jetzt verstehe ich, was du mit „mitsortieren“ gemeint hattest.
Ja; gerade dann ist es unabdingbar, ein einzelnes Array mit einem Element für alle Angaben zu einem Einzelteam zu haben, und nicht lauter verschiedene Arrays mit unterschiedlichen Wert-Typen. Sonst sortierst du zwar ein Punkte-Array, weißt auch, wie viele Punkte der Sieger hat – aber du kannst nicht zuordnen, wie dieses Team heißt.
Also wie schon oben: td[i] = { Name="theWinners", Punkte=123 }
  • Dann td sortieren mit der Bedingung return ( a.Punkte > b.Punkte )
  • Dabei wird td[1] zu dem Objekt mit den meisten Punkten.
  • Dann ist td[1].Name der Name des Siegerteams; td[2].Name bekommt Silber.
VG --PerfektesChaos 18:53, 28. Apr. 2014 (CEST)

Jetzt passt alles, mein Modul ist fertig. Vielleicht später noch ein paar Codeoptimierungen, aber die Funktion wird erfüllt. Jetzt wollte ich noch wissen, da ich die Vorlage auch im ANR verwenden will, wo ich die Vorlage hinverschieben bzw. kopieren soll. Auf meinen stand der Technik bin ich folgender Meinung:

  1. Modul:Benutzer:Korrektor123/Vorlagen/LiveTabelle nach Modul:Vorlage:LiveTabelle Tennis-Bundesliga
  2. Benutzer:Korrektor123/Vorlagen/LiveTabelle nach Vorlage:LiveTabelle Tennis-Bundesliga
  3. Benutzer:Korrektor123/Vorlagen/LiveTabelle/Doku nach Vorlage:LiveTabelle Tennis-Bundesliga/Doku

Wenn ich falsch liegen sollte bitte um Verbesserung. Und noch mals herzlichen Dank für die Unterstützung. Gruß, --Korrektor123 (Diskussion) 15:04, 2. Mai 2014 (CEST)

  1. Das Grundprinzip der Benennung hast du richtig erkannt.
  2. Ich habe keine Ahnung von Sport; und kapiere mit Müh und Not den Aufstieg aus der 2. in die 1. Fußball-Bundesliga. Ist dieses System noch für irgendeine andere Sportart anwendbar; und sei es Badminton, Billard oder Schach? Dann sollte die Vokabel „Tennis“ nicht auftreten, sondern ein neutraler Name dieses Systems gewählt werden.
  3. Viel Erfolg --PerfektesChaos 15:39, 2. Mai 2014 (CEST)

Ich hab mich mal einbisschen umgesehen in den verschiedenen Sportportalen und da gibt es beim Badminton zwar eine Ähnlichkeit, allergdings eine Auflistung wie beim Tennis in Punkte, Matches, Sätze und Spiele finde ich da auch nicht. --Korrektor123 (Diskussion) 15:57, 2. Mai 2014 (CEST)

Na ja; Vokabeln wie „Tennis“ oder „Bundesliga“ schränken den Einsatz stark ein und suggerieren Spezialitäten, die nicht vorliegen; wenn es dann irgendwo beim Tischtennis oder in britischen Regionalmeisterschaften anwendbar ist, sieht das komisch aus. Deshalb wäre eine neutrale Bezeichnung für das Turniersystem günstiger. VG --PerfektesChaos 20:09, 2. Mai 2014 (CEST)

Wie wärs mit Vorlage:LiveTabelle 10Mannschaften, da sie ja für maximal 10 Mannschaften ausgelegt ist. --Korrektor123 (Diskussion) 14:50, 3. Mai 2014 (CEST)

Wäre sicherer.
Ich habe keine Ahnung, was eine „LiveTabelle“ ist; aber wenn sich jetzt herausstellt, dass man das auch für die australischen Tischtennismeisterschaften nutzen kann, dann irritiert der Name nicht.
Schönes Wochenende --PerfektesChaos 14:54, 3. Mai 2014 (CEST)

Mit LiveTabelle meine ich einfach nur eine Tabelle, die ein Ereignis darstellt, das noch nicht abgeschlossen ist. --Korrektor123 (Diskussion) 14:57, 3. Mai 2014 (CEST)

Archivierung dieses Abschnittes wurde gewünscht von: PerfektesChaos 13:05, 25. Dez. 2014 (CET)

Magic words

Hallo, ich bin gerade daran gescheitert mit {{Str find}}, {{Str left}} und {{Str right}} Leerzeichen aus einem Parameter bzw. {{PAGENAME}} zu ersetzen. Mit &#32; als Parameter hat es jedenfalls nicht geklappt. Offenbar kann man aber in der deutschen WP en:WP:PF auch nicht benutzen, speziell dachte ich da an en:Template:lc und en:Template:replace. Zumindest habe ich in der deutschen WP nicht gefunden und eine Verknüpfung über Wikidata existierte jedenfalls nicht. Werden die eigentlich nicht umgesetzt und wäre es nicht sinnvoll, solche grundlegende Vorlagen für alle Sprachversionen der WP zur Verfügung zu stellen? MfG --Hoenk (Diskussion) 02:06, 24. Aug. 2014 (CEST)

  • Parser-Funktionen gibt es auf jedem WMF-Wiki, auch hier.Quelltext angucken
  • en:Template:lc ist überflüssig und ineffizient, da es die Parser-Funktion {{lc:}} gibt.
    • Ansonsten haben wir seit zehn Jahren die Str-Vorlagen (kompatibel).
  • Mit dem Versuch, Leerzeichen zu ersetzen, dürftest du auf ein interessantes Phänomen gestoßen sein: Die Vorlagenparameter werden in der Regel getrimmt; dementprechend wird dir oft die Vorlagenprogrammierung dein Leerzeichen in ein Nichts umwandeln.
  • Was willst du denn im Endeffekt erreichen? Die Leerzeichen in einem Seitennamen in Unterstreichungsstriche umwandeln, damit sie als URL genutzt werden können?
LG --PerfektesChaos 11:03, 24. Aug. 2014 (CEST)
Okay, das mit LC ist ja schon mal gut, ich hatte nur kein Lemma mit Vorlage:lc gefunden, daher nahm ich zunächst an, ohne es weiter zu testen, dass dies auch nicht verfügbar wäre.
Bei der englischen Seite zu Magic Words bin ich auf den Link zu ParserFunctions Extension page sowie zu StringFunctions#replace bei MediaWiki gestoßen. Es gab wohl mal eine replace-Vorlage, die <leer> als Leerzeichen interpretierte. Das wäre jetzt schon mal hilfreich.
In meinem konkreten Fall sollen Leerzeichen durch Bindestriche ersetzt werden, wobei natürlich allgemeiner betrachtet Leerzeichen auch durch andere Zeichen ersetzt werden könnten. Mit der Suche nach Leerzeichen über {{Str find}} bin ich zunächst mal gescheitert. MfG --Hoenk (Diskussion) 19:30, 24. Aug. 2014 (CEST)
P.S.: Wäre eine Suche über eine Regex oder eine Form von Muster möglich und gibt es dann dort eine Möglichkeit des Ersetzens nur des Leerzeichens in der Regex?
Es gibt jetzt die Vorlage:Str replace, die ersetzen kann: {{Str replace|T e x t| |-}} (Ergebnis: T-e-x-t). --Mps、かみまみたDisk. 20:05, 24. Aug. 2014 (CEST)
Ganz herzlichen Dank. Es klappt eigentlich ganz gut. Ich habe meine Anwendung in einer Vorlage in meinem Benutzernamensraum Benutzer:Hoenk/Werkstatt/Vorlage:BBL-Spielerprofil, siehe auch Benutzer:Hoenk/Werkstatt/Vorlagentest, derzeit noch geparkt, weil ich das Überschreiben der alten Vorlage Vorlage:BBL-Spielerprofil, die mit der neuen Webseite wohl obsolet wird, noch im Portal absprechen wollte. Vielen Dank und liebe Grüße --Hoenk (Diskussion) 23:13, 26. Aug. 2014 (CEST)
Archivierung dieses Abschnittes wurde gewünscht von: PerfektesChaos 13:04, 25. Dez. 2014 (CET)

Nutzung von subst bei Lua-Vorlagen

Hallo, ist es möglich Vorlagen, die Lua nutzen, substituierbar zu machen? --Cepheiden (Diskussion) 15:43, 12. Jan. 2014 (CET)

Ich habe interessiert mitgelesen und weiß, worauf du abzielst.
Jede Vorlage kann substituiert werden; es spielt keine Rolle, ob da drin ein #invoke steht.
Im Unterschied zu normalen Vorlagen wüsste Lua jedoch, dass es im Moment Gegenstand einer Substituierung ist, und könnte in diesem Fall COinS unterdrücken.
Bereits heute ginge aber Substituierung per C&P: Einfach den dargestellten Artikeltext mit perfekter Formatierung markieren, in den Quelltext einfügen, Werktitel und ggf. Sammelwerk kursiv machen, Weblinks usw. ggf. neu verlinken, fertig.
Das Gemurre von einem Dutzend Unzufriedener ist nicht repräsentativ, und Alternativen im Sinne einer Totalentfernung auch nicht MB-haltbar. Der Handvoll Maulender, die sich über „ihren“ Artikel aufregen, stehen Hunderte momentan interessiert Schweigender gegenüber, die die Vorlage einsetzen und nicht missen wollen. Irgendwo kommen die 104.000 Einbindungs-Artikel ja her.
Es gibt halt welche, die die Lit-Angaben mit Vorlage übersichtlicher finden, und insbesondere Ältere, die mit Vorlagen Schwierigkeiten haben. Dass die einen den anderen vorschreiben, wie es überall in der WP zu sein hat, wird es nicht geben. Problematisch wird es nur, wenn sie im selben Artikel aufeinander treffen. Und immer schwierig ist es, wenn bei einem von unterschiedlichen Autoren bearbeiteten Artikel vorhandene Literaturangaben auf Vorlage umgestellt werden; wenn man sie selbst erstmals einfügt, hat man für diese Einfügung das Recht des „Hauptautors“ und der andere müsste es dulden (es gibt auch welche, die den Artikel zum Privatbesitz erklären und per Editwar alles ihnen fremde rausrevertieren; gleichzeitig aber nach Respekt und Toleranz für ihre Privatmeinung brüllen, die für alle die Richtschnur zu sein habe). Insgesamt aber wohl auch viel Gemecker aus einem Gefühl allgemeiner Überforderung und Unzufriedenheit heraus; dauernd soll man irgendwas dazulernen, und nichts ist mehr so schön wie damals, 2005. Lautstarke Einzelgruppe ist aber keine MB-Mehrheit. Mit cite web und cite book können die Herrschaften ja schon mal anfangen.
LG --PerfektesChaos 16:49, 12. Jan. 2014 (CET)
Hallo,
ein einfaches {{subst:Literatur|Titel=Der Titel|Jahr=2009}} funktioniert aber auch mit der Lua-Version nicht. Muss in der Vorlage noch etwas umgeschrieben werden? --Cepheiden (Diskussion) 20:46, 14. Jan. 2014 (CET)
Muss ich mir anschauen; bisher war subst von Lit noch nie Design-Thema. Wird schon gehen. LG --PerfektesChaos 21:05, 14. Jan. 2014 (CET)
Kein Parameter wurde durchgereicht; der Pflichtparameter Titel also auch nicht.
Das liegt daran, dass der umgebende frame hier nicht an der gewohnten Stelle zur Verfügung steht; gehe ich mal gucken, wie man unter subst-Bedingungen an den rankommt.
Bis dann --PerfektesChaos 20:12, 15. Jan. 2014 (CET)
Hm, sieht gerade nicht so gut aus.
Die Parameterübernahme in beliebigen Mengen funktioniert zurzeit offenbar nur bei echter Vorlageneinbindung; nicht aber beim substen.
Es funktioniert aber auch nicht die Erkennung, dass eine Vorlage dabei ist, gesubstet zu werden; das war erst kürzlich eingeführt worden. Bug?
Da muss ich weiter experimentieren; kann etwas dauern.
Irgendwann mal sollte das dann auch mit subst genauso funktionieren wie bei regulärer Einbindung; ich ahne dunkel, dass das substen bislang nicht zur Unterstützung von Lua-Parameterlisten programmiert wurde.
Demnächst wieder mehr --PerfektesChaos 22:08, 16. Jan. 2014 (CET)

Gute Nachricht: Prinzipiell ist es möglich, eine komplette Lua-Vorlageneinbindung unter Verwendung aller Parameterwerte zu substen.

  • Schlechte Nachrichten:
    • Es reicht kein einfaches subst, sondern beim momentanen Stand der MediaWiki-Programmierung muss ein spezieller Aufruf mitsamt dem subst per C&P eingefügt werden.
    • Es muss voraussichtlich ein spezielles Modul geschrieben werden, das diese Situation erkennt, mehrere umhüllende Ebenen generiert oder so und entweder über die klassische Vorlageneinbindung oder einen Seiteneingang das inhaltliche Modul aufruft. Vielleicht fällt mir dazu aber noch was Besseres ein.
    • Die Vorlagen-unterstützenden Module müssen erweitert werden; sie sollten ggf. einen speziellen Lua-Seiteneingang bekommen und einen Steuerparameter zur Unterdrückung von COinS usw. durchreichen.
  • Vielleicht unterstützt ja MediaWiki irgendwann auch das substen von Parameter-Vorlagen.

Schönes Wochenende --PerfektesChaos 15:53, 18. Jan. 2014 (CET)

Hallo, danke für die Recherche. Schönes WE -- Cepheiden (Diskussion) 16:59, 18. Jan. 2014 (CET)
Substituierbarkeit in diesem Fall eingebaut.
  • Schöner geht es beim momentanen Stand der Software nicht. Vielleicht in der Zukunft, wenn Lua und subst offiziell voneinander wissen.
  • Die Herren werden sich aber trotzdem wundern. Zwar ist im Ergebnis das COins weggelassen, wodurch es halbwegs erträglich wird; aber sie bekommen es natürlich HTML-mäßig mit Qualität formatiert. Das heißt: Entities, schmale Leerzeichen, Umbruchschutz, <cite>. Wer das dann hübscher findet als die Vorlageneinbindung, soll selbst hinterherräumen.
  • Substituierung kann auch zur Folge haben, dass die übergebenen Untervorlagen substituiert werden. Ob das wirklich eine schlaue Idee ist? Ich denke, die Vorlagensyntax ist da doch übersichtlicher, und die Geschichte mit der bösen, unverständlichen Lit-Vorlage höre ich seit sieben Jahren von unverändert immer denselben Leuten, die die Syntax längst begriffen haben und nur so tun, als ob das bei fünfstelligem Editcount für sie unbegreiflich sei.
Es wird so allmählich ein Performance-Problem geben. Irgendwie ist am verabredeten Konzept und am neutralen Datenkatalog vorbei allerlei eingeschleppt worden. Allmählich wird es zu Spaghetti-Code. Bitte dringend mit Hunderten von Einbindungen erproben, statt neue Formate einzubauen.
Schönen Sonntag --PerfektesChaos 13:26, 19. Jan. 2014 (CET)
  • Danke für die Mühe, ob das dann besser ist müssen die anderen Nutzer entscheiden.
  • Ich weiß was du meinst, aber der Datensatz war bei der Übertragung noch ausschließlich auf Vorlage:Literatur bezogen. Ziel war es aber von Anfang an ein Modul für alle Zitiervorlagen bereitzustellen. Dies umfasst auch Archiv* usw für die Vorlage:Internetquelle. Aber sei beruhigt weitere Parameter führe ich nicht ein ;-)
--Cepheiden (Diskussion) 17:29, 19. Jan. 2014 (CET)
Archivierung dieses Abschnittes wurde gewünscht von: PerfektesChaos 11:27, 30. Apr. 2018 (CEST)

Wunsch:Vorlage umbauen

Hallo, ich wurde darauf gestoßen, daß der poem-Tag nicht ausreicht, wenn jemand bei einem Gedicht z. B. jede 5. Zeile numerieren möchte. Ein anschauliches Beispiel findet sich in Der Archipelagus. Mir wurde gesagt, es gibt it:Modulo:Poem. Nur sollte es eben auf die hier übliche Variante angepaßt werden, als da erstens die Zeilennummer links steht und zweitens auf der gleichen Zeile, nicht eins darunter. Ist das machbar? Derzeit wird das Problem mit tonnenweise {{0}}en (bzw. etwas gerafft durch {{0|0000}}en) gelöst. --Tommes 

Ein it:Module:Poem gibt es nicht.
  • Ich sehe auch in deren Namensraum nichts, was einen passenden Namen hätte.
  • Grundsätzlich können wir aus anderen Wikis Module importieren, die gut und wartbar und konfigurierbar geschrieben sind und sich dadurch besonders für den internationalen cross-Wiki-Einsatz eignen würden.
  • Die Quelle müsstest du aber nochmal genauer suchen.
VG --PerfektesChaos 21:56, 21. Jan. 2014 (CET)
Es geht um s:it:Modulo:Poem, aber laut Autor "not intended for use, but to explore algorithms only" (bugzilla:13644) Grüße --se4598 / ? 22:27, 21. Jan. 2014 (CET)
Archivierung dieses Abschnittes wurde gewünscht von: PerfektesChaos 11:27, 30. Apr. 2018 (CEST)

Sortierung in Tabellen per Modul

Anlass: Liste der ältesten Menschen - wir haben 15 lebende und ~80 tote Menschen im Altersbereich 114-116, die Reihenfolge ändert sich also fast täglich. Haben wir ein Modul, das Tabellenzeilen sortieren kann? Idealerweise mit getrenntem Sortierschlüssel, wobei einfach alphabetisch sortieren auch geht, wenn man das Alter geeignet formatiert als Kommentar im Quelltext versteckt. Das würde Monow die Arbeit ersparen immer Tabellenzeilen rumzuschieben, man müsste die Tabelle nur aktualisieren wenn jemand stirbt oder neu hinzukommt. Jede Tabellenzeile wäre dann ein (oder zwei mit Sortkey) Parameter für das Modul. --mfb (Diskussion) 17:01, 29. Nov. 2014 (CET)

Das kann so grundsätzlich nicht gehen; ein Modul kann nur vorhandenen Quelltext darstellen, nicht den Quelltext umbauen.
  • Einzig und allein die Übergabe der gesamten Tabelle an ein Modul ginge; dann müssten aber alle | escaped werden. Nicht empfehlenswert. Oder alle Einzelwerte (Zellen, entsprechend gruppiert, beliebig viele).
Mittel der Wahl für den Quelltext wäre JavaScript, ist auch schon häufiger gefragt worden.
  • Man müsste als Autor einen Bereich im Bearbeitungsfeld markieren, und einen Knopf drücken, und bekäme diese Textzeilen sortiert; vielleicht noch mit Trick zur Erkennung einfach strukturierter Tabellenzeilen.
LG --PerfektesChaos 17:28, 29. Nov. 2014 (CET)
Hallo zusammen, es ist (finde ich) nicht schlimm, wenn das weiterhin manuell erledigt werden muss – soviel Arbeit ist es auch wieder nicht (und nebenbei jedesmal ein Anlass, die Hauptquelle auf Neuigkeiten zu überprüfen); ich bin auch nicht der einzige, der sich darum kümmert. @mfb: Ist die Liste denn irgendwo (beispielsweise in einer Wartungskategorie) negativ aufgefallen, oder bist Du zufällig darauf gestoßen (oder hast Du Dich vielleicht daran erinnert)? Danke jedenfalls für Dein Ansinnen, mir Arbeit zu ersparen! Viele Grüße --Monow (Diskussion) 20:45, 29. Nov. 2014 (CET)
Natürlich würde man die ganze Tabelle übergeben, Zeile für Zeile. Alle || durch {{!!}} ersetzen ist kein Ding.
Die Liste ist nicht negativ aufgefallen, aber ich bin beim englischen Äquivalent gerade am Diskutieren und eine automatische Sortierung könnte in vielen Sprachversionen die Wartung vereinfachen. --mfb (Diskussion) 22:05, 29. Nov. 2014 (CET)
Wäre das Modul denn in der Lage, beim Sortieren (wie bisher von uns praktiziert) zunächst nach dem Alter in Jahren und Tagen, erst dann nach den Lebenstagen und zuletzt nach dem früheren Erreichen des Alters zu differenzieren? Hiermit Benachrichtigung an Xquenda, der sehr viel mehr Arbeit als ich in die Liste gesteckt hat. Grüße --Monow (Diskussion) 22:24, 29. Nov. 2014 (CET)
@mfb:
Für sehr einfache, rechteckige, ungefärbte Tabellen mag das angehen.
In den bislang diskutierten Fällen gab es dann allerdings einen Wust von Extrawünschen, die die Zusatzparameter zu einer Schlangengrube machten; Beispiele:
  • Für jede einzelne Zeile soll hinter |- eine einheitliche Stilvereinbarung kommen.
  • Die Zellen in der dritten und fünften Spalte sollen aber rechtsbündig (oder hellblau unterlegt) dargestellt werden.
  • Zur Sortierung ist der Ausdruck in der vierten Spalte zu nehmen.
  • Die Sortierinformation ist ein Datum, eine Zahl.
  • Und dann möchten wir aber auch noch Zeilen mit Zwischenüberschriften.
  • Oder auf Liste der ältesten Menschen soll die 6., 8., 19. usw. Zeile lila unterlegt werden. Wie jetzt das vereinbaren???
Hinzu kommt die Pflichtangabe, wie viele Spalten es sein sollen.
  • Davor kommt eine durch diese Spaltenzahl restlos teilbare Anzahl unbenannter Parameter.
Ich wäre nicht überzeugt von dem Konzept und präferiere die Sortierung direkt im Quelltext per JavaScript, was zum einen auf beliebige Textzeilen angewendet werden kann, beim Vorhandensein von |- auch umswitchen auf Tabellenzeilen.
  • Davon hat der nächste Autor auch noch was.
  • Wenn eine Weile in beliebiger Reihenfolge irgendwas in den Quelltext eingefügt wurde, findet keiner mehr, wo welche Zeile steht, um etwas zu berichtigen.
  • Tabellenextraformatierung ist wumpe. Nur beim Aufruf des JavaScript-Helferleins ansagen, in welcher Spalte die Sortierung stehen möge. Fertig.
@Monow:
Dazu muss irgendwo in der Zeile ein Sortierschlüssel stehen.
LG --PerfektesChaos 22:32, 29. Nov. 2014 (CET)
Du denkst da viel zu kompliziert. Die gesamte Tabellenzeile ist ein einzelner Parameter für die Vorlage. Dieser fängt mit |- <!- - 04241 --> an wobei 4241 hier das Lebensalter in Tagen ist. Dahinter kann beliebiger Code stehen, die alphabetische Sortierung gibt die richtige Reihenfolge. Nur die Nummerierung muss ggf. überdacht werden. Es wird nicht in beliebiger Reihenfolge eingefügt - ich würde sinnigerweise die Toten nach erreichtem Alter sortieren und die noch lebenden darunter oder darüber nach Geburtsdatum sortiert. --mfb (Diskussion) 23:05, 29. Nov. 2014 (CET)
  • „Die gesamte Tabellenzeile ist ein einzelner Parameter“ – das heißt, es geht das elende Pipe-Escaping wieder los.
  • Meine unbeantwortete Frage von oben:
  • Wenn überhaupt jemals jemand sowas programmiert, dann muss das für hinreichend viele Konstellationen anwendbar sein.
  • Ein gesonderter Sortierschlüssel ist in der Regel unerwünscht weil redundant; er soll direkt den Daten entnommen werden, wo möglich.
LG --PerfektesChaos 23:23, 29. Nov. 2014 (CET)
Pipe-Escaping sehe ich nicht als Problem an.
Die Unterlegung ist für noch lebende Personen und die Farbe ist hinter dem "|-", also Teil des Zeilencodes und kein Problem.
Das Modul, wie ich es vorschlage, wäre für alle Tabellen nutzbar bei denen eine automatische Sortierung erwünscht ist.
Ja, Sortierschlüssel direkt aus Daten ist im Allgemeinen wünschenswert, hier aber unpraktisch. Die Redundanz kann vermieden werden, wenn man für die Tabellenzeile eine eigene Vorlage macht, das halte ich aber nicht für nötig. Redundant wäre nur das Geburtsdatum bzw. das erreichte Lebensalter, beides ändert sich nicht. --mfb (Diskussion) 23:32, 29. Nov. 2014 (CET)
Archivierung dieses Abschnittes wurde gewünscht von: ÅñŧóñŜûŝî (Ð) 20:24, 5. Mai 2018 (CEST)