https://github.com/palmcivet/markdown-it-conditional-render
Plugin for creating if-else conditional blocks for markdown-it markdown parser
https://github.com/palmcivet/markdown-it-conditional-render
conditional-rendering markdown-it markdown-it-plugin
Last synced: about 1 year ago
JSON representation
Plugin for creating if-else conditional blocks for markdown-it markdown parser
- Host: GitHub
- URL: https://github.com/palmcivet/markdown-it-conditional-render
- Owner: palmcivet
- License: mit
- Created: 2022-06-17T11:59:21.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2022-08-06T08:05:30.000Z (over 3 years ago)
- Last Synced: 2025-02-17T02:45:34.249Z (about 1 year ago)
- Topics: conditional-rendering, markdown-it, markdown-it-plugin
- Language: TypeScript
- Homepage: https://palmcivet.github.io/markdown-it-conditional-render/
- Size: 188 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: License
Awesome Lists containing this project
README
# markdown-it-conditional-render
[](https://github.com/palmcivet/markdown-it-conditional-render/actions/workflows/build.yml)
English | [中文](./README.zh-CN.md)
Markdown It conditional rendering plugin, inspired by [markdown-it-condition](https://www.npmjs.com/package/markdown-it-condition), the original repository has been removed or moved, but the compiled and compressed code is still available in NPM and has been extracted from [lib/markdown-it-condition.js](./lib/markdown-it-condition.js).
## ⚙️ Options
- `ruleName`:*string*
- Default: `condition`
- Custom rule name
- `ifMarker`:*string*
- Default: `::if`
- Judging from here, *if* branching condition
- `elseIfMarker`:*string*
- Default: `::elseif`
- *else if* branching condition
- `elseMarker`:*string*
- Default: `::else`
- *else* branching condition
- `endIfMarker`:*string*
- Default: `::endif`
- End of judgment
- `validate(condition: string): boolean`
- Preprocess the original text and verify the branching conditions in the text
- Default returns `true`
- `evaluate(condition: string, value: any): boolean`
- Parse the actual parameters and remove the text that does not meet the conditions
- The default processing is as follows:
```ts
function evaluate(condition: string, value: any) {
let element = value;
condition.split(".").forEach((field) => {
element = element[field];
});
if (!!element) {
return true;
}
return false;
}
```
> The full usage of each parameter by default is shown in the [example](#-example)
## 📚 Example
```js
const MarkdownIt = require("markdown-it")
const markdownItEngine = new MarkdownIt();
const markdownItConditionalRender = require("markdown-it-conditional-render");
markdownItEngine.use(markdownItConditionalRender);
const res = markdownItEngine.render(
`
::if flag.value
*This text will be shown*
::else
*This text won't
::endif
`,
{
flag: {
value: true,
},
});
console.log(res);
```
## 🔧 Develop
```bash
$ git clone https://github.com/palmcivet/markdown-it-conditional-render.git
$ cd ./markdown-it-conditional-render
$ pnpm add
$ pnpm run build
```
## ⚖️ License
MIT