BBob a BBCode processor

BBob is a tool to parse and transform [BBCode](https://en.wikipedia.org/wiki/BBCode) written in pure javascript, no dependencies Build Status codecov CodeFactor BCH compliance Known Vulnerabilities ## Packages | Package | Status | Size | Description | |----------------------|------------------------------------------------------------|---------|---------------------------| | @bbob/core | [![@bbob/core-status]][@bbob/core-package] | `3.2K` | Core package | | @bbob/react | [![@bbob/react-status]][@bbob/react-package] | `1.0K` | React renderer | | @bbob/preset-react | [![@bbob/preset-react-status]][@bbob/preset-react-package] | `1.8K` | React default tags preset | | @bbob/html | [![@bbob/html-status]][@bbob/html-package] | `689B` | HTML renderer | | @bbob/preset-html5 | [![@bbob/preset-html5-status]][@bbob/preset-html5-package] | `1.6K` | HTML5 default tags preset | [@bbob/core-status]: https://img.shields.io/npm/v/@bbob/core.svg [@bbob/react-status]: https://img.shields.io/npm/v/@bbob/react.svg [@bbob/preset-react-status]: https://img.shields.io/npm/v/@bbob/preset-react.svg [@bbob/html-status]: https://img.shields.io/npm/v/@bbob/html.svg [@bbob/preset-html5-status]: https://img.shields.io/npm/v/@bbob/preset-html5.svg [@bbob/core-package]: https://npmjs.com/package/@bbob/core [@bbob/react-package]: https://npmjs.com/package/@bbob/react [@bbob/preset-react-package]: https://npmjs.com/package/@bbob/preset-react [@bbob/html-package]: https://npmjs.com/package/@bbob/html [@bbob/preset-html5-package]: https://npmjs.com/package/@bbob/preset-html5 [DEMO Playground](https://codepen.io/JiLiZART/full/vzMvpd) ## Table of contents * [Basic usage](#basic) * [Presets](#presets) * [Create your own preset](#create-preset) * [HTML Preset](#html-preset) * [React Preset](#react-preset) * [React usage](#react) * [Component](#react-component) * [Render prop](#react-render) * [PostHTML usage](#posthtml) * [Create Plugin](#plugin) ### Basic usage ```shell npm i @bbob/core @bbob/html @bbob/preset-html5 ``` ```js import bbob from '@bbob/core' import { render } from '@bbob/html' import presetHTML5 from '@bbob/preset-html5' const processed = bbob(presetHTML5()).process(`[i]Text[/i]`, { render }) console.log(processed.html); // Text ``` ### Presets Its a way to transform parsed BBCode AST tree to another tree by rules in preset #### Create your own preset ```js import { createPreset } from '@bbob/preset' import { render } from '@bbob/html' import bbob from '@bbob/core' const preset = createPreset({ quote: node => ({ tag: 'blockquote', attrs: {}, content: [{ tag: 'p', attrs: {}, content: node.content, }], }), }) console.log(bbob(preset()).process(`[quote]Text[/quote]`, { render }).html) //

Text

``` #### HTML Preset Also you can use predefined preset for HTML ```js import html5Preset from '@bbob/preset-html5' import { render } from '@bbob/html' import bbob from '@bbob/core' console.log(bbob(html5Preset()).process(`[quote]Text[/quote]`, { render }).html) //

Text

``` #### React Preset Also you can use predefined preset for React ```js import reactPreset from '@bbob/preset-react' import { render } from '@bbob/react' import bbob from '@bbob/core' console.log(bbob(reactPreset()).process(`[quote]Text[/quote]`, { render }).html) /* It produces a VDOM Nodes equal to React.createElement('blockquote', React.createElement('p', 'Text')) */ ``` ### React usage #### Component Or you can use React Component ```jsx import React from 'react' import { render } from 'react-dom' import BBCode from '@bbob/react' import reactPreset from '@bbob/preset-react' const MyComponent = () => ( [quote]Text[/quote] ) render() //

Text

``` #### Render prop ### PostHTML usage ### Create Plugin