Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Offensichtlich machen Browser keinen Unterschied zwischen Alpha-numerischen Zeichen und dem Leerzeichen. Wieso auch? Interessant sind Leerzeichen nur innerhalb von Tags. Außerhalb sind nur die spitzen Klammern relevant. Der Fehler steht ja schon in Deinem ersten Beitrag:Ja aber was mache ich mit sowas: Hello <b>happy</b>World!
Jeder Browser bekommt das hin. Aber wie?
Komma-separiert ist übrigens in einer Sprache, die Komma als Inhalt zulässt, vielleicht keine so gute Idee... Genau genommen hast Du auch schon Trenner und musst keine künstlichen einführen: Spitze Klammern und Leerzeichen innerhalb von spitzen Klammern.Wird zu (kommasepariert, whitespace um strings und Zeilenumbrüche werden entfernt):
Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »BlueCobold« (17.06.2016, 06:53)
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].
Community-Fossil
Komma-separiert ist übrigens in einer Sprache, die Komma als Inhalt zulässt, vielleicht keine so gute Idee... Genau genommen hast Du auch schon Trenner und musst keine künstlichen einführen: Spitze Klammern und Leerzeichen innerhalb von spitzen Klammern.
Du kannst jedenfalls keine Regel finden, die Leerzeichen einfach wieder einfügt, denn dem User ist es ja freigestellt folgenden Source zu schreiben:
mein <e/>Text ist <e/> eine Pein<e/> für Jedermann<e/>!
Quellcode |
|
1 2 3 4 5 6 7 |
html_delimiter = []byte{ '/', '"', '\'', '=', ' ', '\t'} |
Die Leerzeichen müssen ohnehin nochmal gesondert betrachtet werden: Hat man mehrere Whitespaces in HTML hintereinander, werden diese im Normalfall zu einem zusammengefasst oder weggelassen, abhängig vom Kontext. Whitespacess können aber auch über HTML-Entitäten definiert werden, wie . Der HTML-Code Hello World! würde in einem einzelnen Leerzeichen resultieren, nicht aber in 3 Leerzeichen. pre-Elemente (sofern nicht per CSS angepasst) sorgen bspw. dafür, dass die Whitespaces in ihnen nicht zusammengefasst werden. Und auch über mehrere HTML-Entitäten kann man mehrere Leerzeichen hintereinander hinbekommen.
Eine Frage zu Markdown:
Wie würde *Hello*World*! ausgewertet werden?
Ist das Bindestrich auch ein Formatierungssymbol? Wenn ja, wie würde -Probe-Wort- ausgewertet werden?
Wenn die Formatierungszeichen in der Mitte nicht berücksichtigt, weil sie zwischen 2 Buchstaben stehen, dann wird es ohnehin schwieriger, die Übersetzung durchzuführen. Immerhin müsstest du manuell Leerzeichen einfügen, die vom Benutzer nicht unbedingt eingegeben wurden, damit die Formatierung richtig übernommen wird.
Darf ich in diesem Sinne die Frage in den Raum werfen, warum Markdown verwendet wird? Gibt es dafür bestimmte Vorgaben (ein anderes Programm verwendet dies) oder könntest du auch bspw. BB-Code verwenden?
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Nun, wenn das so ist, hast Du eigentlich also gar kein Problem mit Leerzeichen!?Der Tokenizer macht seinen Job schon gut, kannst dir ja mal die Tests ansehen, da siehst du genau welche Tokens rauskommen.
Allerdings werden die Whitespaces, so wie ich es bisher verstanden habe, einfach weggeschmissen. Wie will man dann wissen, wie viele Leerzeichen in einem pre-Element mal vorhanden waren?Die Leerzeichen müssen ohnehin nochmal gesondert betrachtet werden: Hat man mehrere Whitespaces in HTML hintereinander, werden diese im Normalfall zu einem zusammengefasst oder weggelassen, abhängig vom Kontext. Whitespacess können aber auch über HTML-Entitäten definiert werden, wie . Der HTML-Code Hello World! würde in einem einzelnen Leerzeichen resultieren, nicht aber in 3 Leerzeichen. pre-Elemente (sofern nicht per CSS angepasst) sorgen bspw. dafür, dass die Whitespaces in ihnen nicht zusammengefasst werden. Und auch über mehrere HTML-Entitäten kann man mehrere Leerzeichen hintereinander hinbekommen.
Jup das ist soweit bekannt, berücksichtige aber noch nicht, da man auch am Ende einfach eine Ersetzung einbauen kann.
Hast du auch die Möglichkeit des Escapens von formatierenden Symbolen (bspw. *) vorgesehen? Mal angenommen, der Benutzer gibt "<b>Benutzer*innen</b>" ein, würde das ein "*Benutzer*innen*" oder "*Benutzer\*innen*" erzeugen? Wenn das Markdown nicht manuell vom Benutzer eingegeben werden kann, dürftests du dir aber auch ein paar Erwartungshaltungen Seitens des Benutzers vom Hals halten, wie das "Formatieren" von Inhalten mit "---" oder "***" irgendwo mitten im Text.Eine Frage zu Markdown:
Wie würde *Hello*World*! ausgewertet werden?
Ist das Bindestrich auch ein Formatierungssymbol? Wenn ja, wie würde -Probe-Wort- ausgewertet werden?
Wenn die Formatierungszeichen in der Mitte nicht berücksichtigt, weil sie zwischen 2 Buchstaben stehen, dann wird es ohnehin schwieriger, die Übersetzung durchzuführen. Immerhin müsstest du manuell Leerzeichen einfügen, die vom Benutzer nicht unbedingt eingegeben wurden, damit die Formatierung richtig übernommen wird.
Das ist ein Problem welches ich bei meinen Programmcode Compilern auch noch nicht hatte. Für Md und HTML darf der Compiler nicht so "strickt" sein. Mit Md -> HTML habe ich noch nicht angefangen, aber da wird er wohl das erste * finden, ab da ein Element einfügen und bei dem * in der Mitte wieder schließen. Das letzte bleibt dann offen (bzw. wird ganz am Ende entsprechend geschlossen, damit der HTML Code zumindest keine Elemente nach dem Editor im Browser kaputt macht). Also wenig Intelligenz hier.
Darf ich in diesem Sinne die Frage in den Raum werfen, warum Markdown verwendet wird? Gibt es dafür bestimmte Vorgaben (ein anderes Programm verwendet dies) oder könntest du auch bspw. BB-Code verwenden?
Naja eigentlich könnte ich auch gleich HTML speichern, das würde auch funktionieren. Ziel ist aber neben der HTML Anzeige im Browser, auch eine rein Textbasierte Form exportieren zu können. Und da finde ich Md als quasi Standard am besten.
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].
Community-Fossil
Nun, wenn das so ist, hast Du eigentlich also gar kein Problem mit Leerzeichen!?Der Tokenizer macht seinen Job schon gut, kannst dir ja mal die Tests ansehen, da siehst du genau welche Tokens rauskommen.
Allerdings werden die Whitespaces, so wie ich es bisher verstanden habe, einfach weggeschmissen. Wie will man dann wissen, wie viele Leerzeichen in einem pre-Element mal vorhanden waren?Die Leerzeichen müssen ohnehin nochmal gesondert betrachtet werden: Hat man mehrere Whitespaces in HTML hintereinander, werden diese im Normalfall zu einem zusammengefasst oder weggelassen, abhängig vom Kontext. Whitespacess können aber auch über HTML-Entitäten definiert werden, wie . Der HTML-Code Hello World! würde in einem einzelnen Leerzeichen resultieren, nicht aber in 3 Leerzeichen. pre-Elemente (sofern nicht per CSS angepasst) sorgen bspw. dafür, dass die Whitespaces in ihnen nicht zusammengefasst werden. Und auch über mehrere HTML-Entitäten kann man mehrere Leerzeichen hintereinander hinbekommen.
Jup das ist soweit bekannt, berücksichtige aber noch nicht, da man auch am Ende einfach eine Ersetzung einbauen kann.
Hast du auch die Möglichkeit des Escapens von formatierenden Symbolen (bspw. *) vorgesehen? Mal angenommen, der Benutzer gibt "<b>Benutzer*innen</b>" ein, würde das ein "*Benutzer*innen*" oder "*Benutzer\*innen*" erzeugen? Wenn das Markdown nicht manuell vom Benutzer eingegeben werden kann, dürftests du dir aber auch ein paar Erwartungshaltungen Seitens des Benutzers vom Hals halten, wie das "Formatieren" von Inhalten mit "---" oder "***" irgendwo mitten im Text.Eine Frage zu Markdown:
Wie würde *Hello*World*! ausgewertet werden?
Ist das Bindestrich auch ein Formatierungssymbol? Wenn ja, wie würde -Probe-Wort- ausgewertet werden?
Wenn die Formatierungszeichen in der Mitte nicht berücksichtigt, weil sie zwischen 2 Buchstaben stehen, dann wird es ohnehin schwieriger, die Übersetzung durchzuführen. Immerhin müsstest du manuell Leerzeichen einfügen, die vom Benutzer nicht unbedingt eingegeben wurden, damit die Formatierung richtig übernommen wird.
Das ist ein Problem welches ich bei meinen Programmcode Compilern auch noch nicht hatte. Für Md und HTML darf der Compiler nicht so "strickt" sein. Mit Md -> HTML habe ich noch nicht angefangen, aber da wird er wohl das erste * finden, ab da ein Element einfügen und bei dem * in der Mitte wieder schließen. Das letzte bleibt dann offen (bzw. wird ganz am Ende entsprechend geschlossen, damit der HTML Code zumindest keine Elemente nach dem Editor im Browser kaputt macht). Also wenig Intelligenz hier.
Darf ich in diesem Sinne die Frage in den Raum werfen, warum Markdown verwendet wird? Gibt es dafür bestimmte Vorgaben (ein anderes Programm verwendet dies) oder könntest du auch bspw. BB-Code verwenden?
Naja eigentlich könnte ich auch gleich HTML speichern, das würde auch funktionieren. Ziel ist aber neben der HTML Anzeige im Browser, auch eine rein Textbasierte Form exportieren zu können. Und da finde ich Md als quasi Standard am besten.
Einerseits wäre es wahrscheinlich sinnvoll, das, was der Benutzer eingibt, auch so in der Datenbank zu speichern. Wenn er BB-Code eingibt, wäre das BB-Code, bei HTML wäre es HTML usw. Die Übersetzung würde dann nur noch bei der Darstellung des Inhalts stattfinden, nicht als Zwischenschritt beim Speichern und Laden. So bekommt der Benutzer beim Überarbeiten seiner Eingabe auch wieder das, was er selbst eingegeben hat.
Sobald dies so gemacht wird, wird mit dem Zwischenschritt Markdown nur noch dafür gesorgt, dass nur noch ein Teil der Möglichkeiten von HTML verwendet werden kann. Statt also eine Übersetzung zu Markdown durchzuführen, kann man genauso eine "Übersetzung" von dem eingegebenen HTML in bereinigtes HTML (ungewünschte Elemente entfernt etc.) übersetzt.
Will man auch reinen Text ausgeben können, hat man entweder den Schritt Markdown zu Text, oder den Schritt HTML zu Text.
Insgesamt würde ich dir eher dazu raten, wenn der Benutzer HTML eingeben kann, dass dieses Gespeichert und vor dem Ausliefern "bereinigt" wird.
Werbeanzeige