![]() |
Markup-Parser
Hallo,
ich habe zwei Klassen: TParagraph und TCharacter. Beide besitzen jeweils eine Property Name: String und Content: String Nun habe ich ein Memo mit z.B. dem folgenden Inhalt:
Code:
Ich suche nun einen Weg, den Inhalt von TMemo zu parsen.
Das ist mein erster Absatz.
{ps:Normal}Und hier beginnt mein zweiter Absatz, der das Absatzformat "Normal" hat und der {cs:Fett}formatierten, {cs:rot}farbigen{/cs}{/cs} Text darstellen kann. Ach ja und das hier ist der dritte Absatz.
Wie könnte man so etwas umsetzen, bzw. gibt es bereits fertige Implementierungen? Achse, ich möchte kein!!! RichEdit verwenden, fall der Vorschlag kommen sollte ;) Der Parser enthält dann ein Array, welches die Paragraphen enthält und ein Paragraph speichert dan jeweils die Texte (Runs mit Inhalt und optionalem Style) ebenfalls in einem Array. Danke und LG |
AW: Markup-Parser
Also du willst quasi so etwas daraus bekommen:
Code:
[
{ "style": null, "elements":[ { "color": null, "style": [], "content": "Das ist mein erster Absatz" }] }, { "style": "Normal", "elements":[ { "color": null, "style": [], "content": "Und hier beginnt mein zweiter Absatz, der das Absatzformat "Normal" hat und der " }, { "color": null, "style": ["Fett"], "content": "formatierten, " }, { "color": "rot", "style": ["Fett"], "content": "farbigen" }, { "color": null, "style": [], "content": " Text darstellen kann." }] }, { "style": null, "elements":[ { "color": null, "style": [], "content": "Ach ja und das hier ist der dritte Absatz." }] } ] |
AW: Markup-Parser
Ja, ganz genau Sir Ruf :wink: JSON wäre beispielsweise ja gar nicht so übel (siehe Dein Beispiel). Wobei anzumerken ist, dass ich den Color-Tag nicht benötige, da meine Reports nur auf globalen Styles aufbauen. Somit wird die Textfarbe auch als Character-Style gespeichert. Wie "Fett", ist also auch "Rot" ein Character-Style. Der zweite Absatz enthält jedoch verschachtelte Markup, daher müsste das eher so ausschauen:
Code:
{
"style": "Normal", "elements":[ { "style": null, "content": "Und hier beginnt mein zweiter Absatz, der das Absatzformat Normal hat und der " }, { "style": "Fett", "elements":[ { "content": "formatierten, " }, { "style": "Rot", "content": "farbigen" }] }, { "style": null, "content": " Text darstellen kann." }] } |
AW: Markup-Parser
Hmm, offenbar scheint das noch nie jemand in ähnlicher Form gebraucht zu haben?!
Noch ein paar Gedanken dazu:
|
AW: Markup-Parser
Du kannst dir etwas zusammenfrickeln (mit RegEx) oder einen echten Parser schreiben.
So ein Parser geht Zeichen für Zeichen durch und entscheidet anhand des aktuellen Status, was passieren soll. Wäre auf jeden Fall meine Wahl der Mittel. |
AW: Markup-Parser
Das hab ich mir schon gedacht, dass der Parser die beste Variante ist. Ich habe nur null Plan, wie das umzusetzen ist, weil, sobald der Parser z.B. beim ersten { angelangt ist und weitere Verschachtelungen folgen, wird es doch mega kompliziert?!
|
AW: Markup-Parser
Wir benutzen CoCo
![]() |
AW: Markup-Parser
Cool, danke und wie funktioniert der? Hast Du ein Beispiel?
|
AW: Markup-Parser
Zitat:
![]() Lesen bildet. ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:00 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz