BBClash

Crates.io Documentation Crates.io

A robust, opinionated, performance-focused BBCode to HTML parser and compiler.

What is BBClash?

BBClash is the open-source version of the BBCode compiler being built for Penclash. Unlike most implementations, BBClash is not RegEx-based. It functions like a compiler, tokenizing, lexing, and then constructing compliant HTML from an AST-like object. This makes it robust and good at handling even improperly-formatted input.

Our BBCode specification can be found here.

General Usage:

```rust use bbclash::bbcodetohtml;

asserteq!(bbcodeto_html("I'm [i]italic[/i] and [b]bold![/b]"), "

I&#x27m italic and bold!

"); ```

BBClash also comes ready out-of-the-box for use as WASM or with other languages via C bindings.

Pretty and Ugly Output

BBClash has two main modes of operation: pretty and ugly. Pretty output uses the bbcode_to_html function, and excludes improperly formatted bbcode from the final output:

```rust use bbclash::bbcodetohtml;

asserteq!(bbcodeto_html("I'm [colour]missing an argument![/colour]"), "

I&#x27m missing an argument!

"); ```

Ugly uses the bbcode_to_html_ugly function, and leaves improperly formatted BBCode tags in the final output as written:

```rust use bbclash::bbcodetohtml_ugly;

asserteq!(bbcodetohtmlugly("I'm [colour]missing an argument![/colour]"), "

I&#x27m [colour]missing an argument![/colour]

"); ```

Note that neither mode arbitrarily strips any text in square brackets. this only affects improperly-written BBCode tags; [non tags] will not be affected.

Custom Usage:

Because this package was built for an existing application, and because it is performance-focused, BBClash's BBCode implementation is entirely hard-coded. Because of this, it is reccommended that you download a local copy and modify it to suit your needs. Note: currently requires Rust Nightly to build. Relevant issue: 54727

Building is as simple as running $ cargo build. Tests and benchmarks can be run with $ cargo test and $ cargo bench, respectively.

License

This version of BBClash is licensed under the terms of the MIT license.