| 

.NET C# Java Javascript Exception

3
Hallo.
Ich bin per Google auf den BBCode-Parser für .NET gestoßen.
Habe mir sowohl die Datei auf der Hauptseite runter geladen als auch die Quellcode Datei.
Leider schaffe ich es nicht, den Parser in mein VB.NET Projekt einzubinden.
Könnte einer der Entwickler (oder Jemand der es geschafft hat) mal Schritt für Schritt erklären, wie ich den Parser einbinde?
Benutze die Version 2005 und kann aus Kobatibilitätsgründen zu einem Mitentwickler auch nicht auf eine höhere Version zurückgreifen. Der Quellcode fällt also wohl erst einmal flach.

Des weiteren muss ich die BB-Codes erweitern. Geht das nur im Quellcode oder kann ich das auch aus VB.NET heraus machen?

Grüße
News:
13.11.2009
ZAG 61 2
2 Antworten
2
Den Parser einzubinden ist sehr leicht: Du refenrenzierst einfach die Assembly CodeKicker.BBCode.dll und benutzt die BBCodeParser-Klasse. Ein Beispiel dazu findet sich auf der CodePlex-Seite:

var parser = new BBCodeParser(new[]
{
new BBTag("b", "<b>", "</b>"),
new BBTag("i", "<span style=\"font-style:italic;\">", "</span>"),
new BBTag("u", "<span style=\"text-decoration:underline;\">", "</span>"),
new BBTag("code", "<pre class=\"prettyprint\">", "</pre>"),
new BBTag("img", "<img src=\"${content}\" />", "", false, true),
new BBTag("quote", "<blockquote>", "</blockquote>"),
new BBTag("list", "<ul>", "</ul>"),
new BBTag("*", "<li>", "</li>", true, false),
new BBTag("url", "<a href=\"${href}\">", "</a>", new BBAttribute("href", ""), new BBAttribute("href", "href")),
});
return parser.Transform("[b]bbcode[/b]");


Du kannst jetzt alle Tags anpassen, wie Du willst (natürlich sieht der VB-code etwas anders aus, aber die API ist dieselbe).

Unser Parser bei codekicker sieht momentan so aus:

static BBCodeParser bbCodeParser = new BBCodeParser(ErrorMode.ErrorFree, null, new[]
{
new BBTag("b", "<b>", "</b>"),
new BBTag("i", "<span style=\"font-style:italic;\">", "</span>"),
new BBTag("u", "<span style=\"text-decoration:underline;\">", "</span>"),
new BBTag("code", "<pre class=\"prettyprint\">", "</pre>", true, true, content => content.Trim()),
new BBTag("img", "<img src=\"${content}\" />", "", false, true),
new BBTag("quote", "<blockquote>", "</blockquote>", true, true, content => content.Trim()),
new BBTag("list", "<ul>", "</ul>", true, true),
new BBTag("*", "<li>", "</li>", true, false),
new BBTag("url", "<a href=\"${href}\" rel=\"nofollow\">", "</a>", new BBAttribute("href", ""), new BBAttribute("href", "href")),
});

public static string BBEncode(string str)
{
return bbCodeParser.ToHtml(str.NullToEmpty()).Replace("\r", "").Replace("\n", "<br/>");
}


content => content.Trim()

bewirkt, dass der Inhalt des entsprechenden Tags vor der Ausgabe von Leerzeichen an den Enden befreit wird. Deshalb macht es auch keinen Unterschied, ob man bei uns Leerzeilen am Anfang oder Ende von [code]-Tags schreibt.
13.11.2009
Marvin Steppat 4,0k 1 4 8
Marvin Steppat 4,0k 1 4 8
1
Ja, bei läuft das Ding, wenn Die codeparser.net.dll meinst...

Eigentlich kopierst Du nur die DLL in Dein bin-Verzeichnis und kannst dann die Klasse codeparser.net verwenden.

Imports codeparser.net

Ich habe mir eine Methode namens ParseBBCode geschrieben, die zunächst über ParserConfiguration die codeparser.config läd und dann über TagConfiguration mit Dingen erweitert, die so nicht deklarativ zu handlen sind.

Hier ein wenig Pseudo-Code:

Dim c As ParserConfiguarion = New ParserConfiguarion(...Pfad zur config)
Dim t As TagConfiguration = New TagConfiguration(...Tag, ...Replacement)
c.TagConfigurations.Add(t)

Mit der Konfiguration öffne ich dann den Parser und lasse ich auf den übergebenen Text los, der zurückgegeben wird:

Dim p As Parser = New Parser(c)
Return p.Parse(...text)

Klappt ganz hervorragend, auch wenn die Klasse BBCode nicht komplett unterstützt.

Gruss
Kristof
13.11.2009
Kiko 541 1 3

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH