You can configure the markdown parsing rules by configuring the engine object, such as whether the chart available in table(available in the pro version)
engine: {
// Custom syntax
customSyntax: {
// 'SyntaxClass': SyntaxClass
// Force overwrite the built-in syntax parser in case of name conflict
// 'SyntaxClass': {
// syntax: SyntaxClass,
// force: true,
// before: 'HOOK_NAME',
// after: 'HOOK_NAME'
// }
}
}- Key:
customSyntax - Description: Custom syntax configuration
- Type:
{ [HOOK_NAME: string]: { [option: string]: any } | boolean } - Default:
{} - Options:
- SyntaxClass
<[String]> hook name- syntax
<[SyntaxBase]> hook constructor - force
<[Boolean]> whether overwrite hook with the same name - before
<[String]> hookName,execute before this hook - after
<[String]> hookName,execute after this hook
- syntax
- SyntaxClass
Create a custom syntax hook
| parameter | type | description |
|---|---|---|
| HOOK_NAME | string | Syntax hook ID, unique |
| HOOK_TYPE | Markdown.constants.HOOKS_TYPE_LIST | Syntax Hook type, only SEN (inline grammar) and PAR (paragraph grammar) can be selectedhook type, only Sen (inline syntax) and PAR (paragraph syntax) can be selected |
| OPTIONS | { Function } | Optional operation |
options configuration
| parameter | type | description |
|---|---|---|
| beforeMakeHtml ( str: string ): string |
Function | Lifecycle, returns the replaced string |
| makeHtml ( str: string, sentenceMakeFunc: Function ): string |
Function | Lifecycle, returns the replaced string |
| afterMakeHtml ( str: string ): string |
Function | Lifecycle, returns the replaced string |
| rule ( ): { reg: RegExp } | Function | Syntax hook matching rule, return an reg member object containing regexp type |
| test ( str: string ): boolean |
Function | Syntax matching operation method. You can customize the matching method |
const CustomHook = Markdown.createSyntaxHook(
'customHook',
Markdown.constants.HOOKS_TYPE_LIST.PAR,
{
makeHtml(str) {
console.log('hello custom hook');
return str;
},
rule() {
return { reg: new RegExp() };
}
}
);
new Markdown({
engine: {
customSyntax: {
CustomHook: CustomHook
}
}
});Insert before or after the specified hook, only one parameter will take effect, and before takes precedence
new Markdown({
engine: {
customSyntax: {
CustomHook: {
syntax: CustomHook,
before: 'codeBlock',
// after: 'codeBlock'
}
}
}
});new Markdown({
engine: {
customSyntax: {
CustomHook: {
syntax: CustomHook,
force: true
}
}
}
});Create a custom menu hook
| parameter | type | description |
|---|---|---|
| HOOK_NAME | string | Syntax hook ID, unique |
| OPTIONS | { Object } | Custom menu configuration |
options 配置
| parameter | type | description |
|---|---|---|
| iconName | String | Icon class name |
| onClick ( selection: Function ) |
Function | Callback function when clicked |
| shortcutKeys | Array | Shortcut key collection is used to register keyboard functions. When the matching shortcut key combination hits, the click function will also be called |
| subMenuConfig ( name: String iconName: String noIcon: Boolean onClick: Function ) |
Array | Submenu collection |