@taller/wordpress-classic-parser
v1.0.0
Published
Parser to wordpress content originated from classic editor
Downloads
1
Readme
Wordpress Classic Parser
This lib helps to parser wordpress content generated by the Classic Editor.
For content generated using blocks we have a Wordpress package called block-serialization-default-parser to parse the content and provide structured data. However, the mentioned lib is not able to parse content generated by the Classic Editor. Then, this lib was developed to do that.
How to install
yarn add @taller/wordpress-classic-parser
or
npm install @taller/wordpress-classic-parser
How to use
Using this lib is quite simple. You just need use the parse method and provide the Raw Content (that one containing shortcodes, before of being rendered).
parse(content /*: string */, options /*?: Object */);`
Parse given content, and return an object with structured content.
- content, content to parse
- options, parser options
import { parse } from "@taller/wordpress-classic-parser";
const content = "Text\r\n[embed]https://www.twitter.com.br/some-url[/embed]";
parse(content);
/*
[
{
type: "paragraph",
children: [
{
type: "text",
value: "Text",
},
{
type: "tag",
tag: "br",
attrs: {},
children: [],
},
{
type: "embed:twitter",
value: "https://www.twitter.com.br/some-url",
attrs: {
named: {},
numeric: [],
},
},
],
},
]
*/
By default, the content provided will be preprocessed and all the breaklines (\r\n, \n, <br/>, <br /> and <br>) will be replaced for the tag <br />. Also, all the tabulation (\t) will be removed.
Options
{
contentPreprocessor?: (content: string) => string;
embedTypeProcessor?: (shortcode: Shortcode) => string;
}
contentPreprocessor
Allow to preprocess the content to be parsed. Receive the original content as argument. As example, if you want to replace the breaklines for <hr /> tags, you can do that:
import { parse } from "@taller/wordpress-classic-parser";
const content = "Text\r\nAnother Text";
const options = {
contentPreprocessor: (content) => content.replace(/\r\n/, "<hr />"),
};
parse(content, options);
/*
[
{
type: "paragraph",
children: [
{
type: "text",
value: "Text",
},
{
type: "tag",
tag: "hr",
attrs: {},
children: [],
},
{
type: "text",
value: "Another Text",
},
],
},
]
*/
embedTypeProcessor
Allow to define the embed type as you need. Receive a Shortcode as argument. As example, if you want to define your custom embed type, you can do that:
import { parse } from "@taller/wordpress-classic-parser";
const content = "Text[embed]https://www.twitter.com.br/some-url[/embed]";
const options = {
embedTypeProcessor: (shortcode) => {
const { type } = shortcode;
return type === "closed" ? "embed:closed" : "embed:notclosed";
},
};
parse(content, options);
/*
[
{
type: "paragraph",
children: [
{
type: "text",
value: "Text",
},
{
type: "embed:closed",
value: "https://www.twitter.com.br/some-url",
attrs: {
named: {},
numeric: [],
},
},
],
},
]
*/
Contributing
- Fork it!
- Create your feature branch: git checkout -b my-new-feature
- Commit your changes: git commit -m 'feat: Add some feature'
- Push to the branch: git push origin my-new-feature
- Submit a pull request :D