@elderjs/shortcodes
Version:
An Shortcode parser with support of arguments, key-value attributes, nesting, and async.
122 lines (82 loc) • 2.95 kB
Markdown
> This is a fork of [meta-shortcodes](https://github.com/metaplatform/meta-shortcodes) which adds async support and has updated the tests to support async.
Generic shortcodes parser with support of attributes and single/pair tags.
```javascript
var should = require("should");
var ShortcodeParser = require("meta-shortcodes");
var parser = ShortcodeParser();
parser.add("test", async function (opts, content) {
return content.toUpperCase();
});
parser.add("nested", async function (opts, content) {
if (!opts.multiply) return "Missing multiply attribute!";
var out = [];
for (var i = 0; i < opts.length; i++)
out.push(opts[i] * parseFloat(opts.multiply));
return out.join(" ");
});
var input =
"Sample [test]shortcode content [nested multiply=2 2 4/] is upper[/test] case!";
var output = await parser.parse(input);
output.should.eql("Sample SHORTCODE CONTENT 4 8 IS UPPER case!");
```
```sh
npm install meta-shortcodes
```
```javascript
opts = {
openPattern: "\\[",
closePattern: "\\]",
};
```
Registers new shortcode
| Param | Type | Description |
| --------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------ |
| shortcodeName | string | Name of shortcode tag |
| handlerFunction | function | Function/async function that returns replacement for shortcode. Accepts two arguments - `options` object and `content` string. |
Registers new shortcode
| Param | Type | Description |
| -------- | ------ | ------------------------------------------------- |
| inputStr | string | Input string where shortcodes should be replaced. |
```text
[]
[]content[/name]
[]
[]
\\[this shortcode is not processed /]
```
```sh
npm install --dev
npm test
```
**Current code-coverage 97%**
```javascript
var should = require("should");
var ShortcodeParser = require("meta-shortcodes");
var parser = ShortcodeParser({
openPattern: "\\{{",
closePattern: "\\}}",
});
parser.add("test", function (opts, content) {
return content.toUpperCase();
});
var output = parser
.parse("Sample {{test}}upper{{/test}} case!")
.should.eql("Sample UPPER case!");
```
See License file.