[UserLib] BBCodes in PB

Anwendungen, Tools, Userlibs und anderes nützliches.
Benutzeravatar
bluejoke
Beiträge: 1244
Registriert: 08.09.2004 16:33
Kontaktdaten:

[UserLib] BBCodes in PB

Beitrag von bluejoke »

Hallo!

Ich möchte hier mal ein kleines Teilprojekt vorstellen, dass ich inzwischen fertiggestellt habe. Ich würde es als BBCode - Parser bezeichnen. BBCodes kennt Ihr ja hier vom Board, das ist z.B. b+/b u.s.w.
Das Forum macht ja nun nichts weiter, als (vielleicht funktionierts jetzt nichtmehr mit <b> sondern mit Stylesheets, das ist hier aber egal) b durch <b> zu ersetzen, damit der Browser später HTML bekommt.
Das wäre auf jeden Fall eine ein bischen zu einfache Aufgabe (das wäre ja nur ReplaceString).

Ich hab jetzt endlich einen Parser für die 2. Variante der BBCodes, z.B. [url href="blablabla"] (Achtung: kein korrekter phpBB-Code, der würde lauten [url=blablabla]) wird zu <a href="blablabla">. Ich habe den BBCode bewusst ein bischen verändert, um theoretisch unendlich viele solche Parameter zuzulassen.

Dieser verworrene Text, sollte nur ein bischen die Voraussetzungen klären, nun zu meiner Userlib:
sie heißt SR_BBCode und enthält nur einen einzigen Befehl: SR_DoTag()
Weil mirs echt zu mühsam ist, eine Hilfedatei zu erstellen, hier mal eine echte "Online"-Hilfe:
Syntax: neuertext.s = SR_DoTag(text.s, tag.s, template.s)
Beschreibung: SR_DoTag sucht in text.s nach tag.s (tag muss ohne Klammern angegeben sein, gesucht wird nach "["+tag.s) und analysiert die in text.s angegebenen Parameter. Nach dem Einsetzen dieser Parameter in template.s (die Platzhalter für die Templates müssen so angegeben werden: "%parameter%" - schaut euch das Beispiel unten an), wird der jeweilige Tag mit dem verarbeiteten template-code ersetzt.
Tut mir echt leid, ich kanns einfach nicht besser erklären. Damits klar wird hier ein lauffähiges (benötigt natürlich die Lib) Beispiel.

Code: Alles auswählen

; Beispielcode für SR_BBCode

; Hier kommt ein Beispieltext der verarbeitet wird
bla.s = "blablabla"
bbcode1.s = "[link url="+#DOUBLEQUOTE$+"http://pureboard.de"+#DOUBLEQUOTE$+" titel="+#DOUBLEQUOTE$+"Deutsches Supportforum zu PB"+#DOUBLEQUOTE$+" nocheinparameter="+#DOUBLEQUOTE$+"Hier steht irgendwas"+#DOUBLEQUOTE$+"]"
bbcode2.s = "[b text="+#DOUBLEQUOTE$+"Hier ein fetter Text"+#DOUBLEQUOTE$+"]"
text.s = bbcode1+#CRLF$+bbcode2+#CRLF$+bbcode1+#CRLF$
Debug "Ausgangstext:"
Debug text
Debug ""
; Der BB-Tag der gesucht wird
tag1.s = "link"
tag2.s = "b"

; Die verwendeten Templates
template1.s = "<a href="+#DOUBLEQUOTE$+"%url%"+#DOUBLEQUOTE$+" alt="+#DOUBLEQUOTE$+"%titel%"+#DOUBLEQUOTE$+" title="+#DOUBLEQUOTE$+"%titel%"+#DOUBLEQUOTE$+">%titel% (URL: %url%)</a>"
template2.s = "<b>%text%</b>"

neuertext.s = SR_DoTag(text, tag1, template1)
Debug "Nach der Verarbeitung des Tags [link]:"
Debug neuertext
Debug ""

endtext.s = SR_DoTag(neuertext, tag2, template2)
Debug "Endergebnis:"
Debug endtext
Es ist natürlich sinnvoller, wenn die Befehlsparameter text, tag und template nicht statisch im Programmcode stehen. (damit ists eigentlich überhaupt nicht mehr sinnvoll)
Geplant sind für zukünftige Versionen:
-ein optionaler Parameter der verwendet wird, wenn keine BBCode-Parameter angegeben sind.
-An-/Abschaltbarkeit der Klein-/Großschreibungssensibilität.

Bitte fragt wenn irgendwas unklar ist, und das am besten hier im Thread.
EDIT: Download funzt gerade nicht

Lib ist mit PB 3.93 + TailBite erstellt.
Zuletzt geändert von bluejoke am 06.05.2005 12:50, insgesamt 1-mal geändert.
Ich bin Ausländer - fast überall
Windows XP Pro SP2 - PB 4.00
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8820
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag von NicTheQuick »

Sieht schick aus.

Aber mal eine andere Frage:
(siehe PN)
Antworten