@wordpress/shortcode
Version:
Shortcode module for WordPress.
138 lines (75 loc) • 4.22 kB
Markdown
# Shortcode
Shortcode module for WordPress.
## Installation
Install the module
```bash
npm install @wordpress/shortcode --save
```
_This package assumes that your code will run in an **ES2015+** environment. If you're using an environment that has limited or no support for such language features and APIs, you should include [the polyfill shipped in `@wordpress/babel-preset-default`](https://github.com/WordPress/gutenberg/tree/HEAD/packages/babel-preset-default#polyfill) in your code._
## API
<!-- START TOKEN(Autogenerated API docs) -->
### attrs
Parse shortcode attributes.
Shortcodes accept many types of attributes. These can chiefly be divided into named and numeric attributes:
Named attributes are assigned on a key/value basis, while numeric attributes are treated as an array.
Named attributes can be formatted as either `name="value"`, `name='value'`, or `name=value`. Numeric attributes can be formatted as `"value"` or just `value`.
_Parameters_
- _text_ `string`: Serialised shortcode attributes.
_Returns_
- `import('./types').ShortcodeAttrs`: Parsed shortcode attributes.
### default
Creates a shortcode instance.
To access a raw representation of a shortcode, pass an `options` object, containing a `tag` string, a string or object of `attrs`, a string indicating the `type` of the shortcode ('single', 'self-closing', or 'closed'), and a `content` string.
_Type_
- `import('./types').shortcode`Shortcode instance.
### fromMatch
Generate a Shortcode Object from a RegExp match.
Accepts a `match` object from calling `regexp.exec()` on a `RegExp` generated by `regexp()`. `match` can also be set to the `arguments` from a callback passed to `regexp.replace()`.
_Parameters_
- _match_ `import('./types').Match`: Match array.
_Returns_
- `InstanceType<import('./types').shortcode>`: Shortcode instance.
### next
Find the next matching shortcode.
_Parameters_
- _tag_ `string`: Shortcode tag.
- _text_ `string`: Text to search.
- _index_ `number`: Index to start search from.
_Returns_
- `import('./types').ShortcodeMatch | undefined`: Matched information.
### regexp
Generate a RegExp to identify a shortcode.
The base regex is functionally equivalent to the one found in `get_shortcode_regex()` in `wp-includes/shortcodes.php`.
Capture groups:
1. An extra `[` to allow for escaping shortcodes with double `[[]]`
2. The shortcode name
3. The shortcode argument list
4. The self closing `/`
5. The content of a shortcode when it wraps some content.
6. The closing tag.
7. An extra `]` to allow for escaping shortcodes with double `[[]]`
_Parameters_
- _tag_ `string`: Shortcode tag.
_Returns_
- `RegExp`: Shortcode RegExp.
### replace
Replace matching shortcodes in a block of text.
_Parameters_
- _tag_ `string`: Shortcode tag.
- _text_ `string`: Text to search.
- _callback_ `import('./types').ReplaceCallback`: Function to process the match and return replacement string.
_Returns_
- `string`: Text with shortcodes replaced.
### string
Generate a string from shortcode parameters.
Creates a shortcode instance and returns a string.
Accepts the same `options` as the `shortcode()` constructor, containing a `tag` string, a string or object of `attrs`, a boolean indicating whether to format the shortcode using a `single` tag, and a `content` string.
_Parameters_
- _options_ `Object`:
_Returns_
- `string`: String representation of the shortcode.
<!-- END TOKEN(Autogenerated API docs) -->
## Contributing to this package
This is an individual package that's part of the Gutenberg project. The project is organized as a monorepo. It's made up of multiple self-contained software packages, each with a specific purpose. The packages in this monorepo are published to [npm](https://www.npmjs.com/) and used by [WordPress](https://make.wordpress.org/core/) as well as other software projects.
To find out more about contributing to this package or Gutenberg as a whole, please read the project's main [contributor guide](https://github.com/WordPress/gutenberg/tree/HEAD/CONTRIBUTING.md).
<br /><br /><p align="center"><img src="https://s.w.org/style/images/codeispoetry.png?1" alt="Code is Poetry." /></p>