英语 | русский
@ diplodoc/ 液体
用于处理YFM(Yandex Flavored Markdown)文件的基本液态语法小而快的执行. 提供模板处理能力,包括可变替代,条件,周期(loops),和前事处理等.
特征
- 可变替换 —— 说
{{ variable }}语法 - 有条件的块 —— 说
{% if condition %}...{% endif %} - 循环/循环区块 —— 说
{% for item in collection %}...{% endfor %} - 前题处理 - YAML 前题提取和加工
- 源地图支持 ——用于调试的可选源地图
- 自定义过滤器 ——可扩展过滤系统
- 代码块保存 ——处理内部不处理液态语法的代码块
安装
npm install @diplodoc/liquid
使用量
基本示例
import {createContext, liquidDocument} from '@diplodoc/liquid';
// Create a context with logger and settings
const context = createContext({
info: console.log,
warn: console.warn,
error: console.error,
});
// Process a document with variables
const template = `
---
title: {{ title }}
---
Hello, {{ name }}!
{% if showDetails %}
Details: {{ details }}
{% endif %}
`;
const vars = {
title: 'My Document',
name: 'World',
showDetails: true,
details: 'Some important information',
};
const result = liquidDocument.call(context, template, vars);
// Result:
// ---
// title: My Document
// ---
//
// Hello, World!
//
// Details: Some important information
处理片段
import {liquidSnippet} from '@diplodoc/liquid';
const snippet = 'Hello, {{ name }}!';
const vars = {name: 'World'};
const result = liquidSnippet.call(context, snippet, vars);
// Result: "Hello, World!"
处理 JSON
import {liquidJson} from '@diplodoc/liquid';
const json = {
title: '{{ title }}',
items: ['{{ item1 }}', '{{ item2 }}'],
};
const vars = {
title: 'My Title',
item1: 'First',
item2: 'Second',
};
const result = liquidJson.call(context, json, vars);
// Result: { title: 'My Title', items: ['First', 'Second'] }
API 密码
职能
liquidDocument(input, vars, sourcemap?)- 用前题处理完整的YFM文档liquidSnippet(input, vars, sourcemap?)- 处理液态模板片段(无前题)liquidJson(json, vars)——递归处理 JSON 对象中的液体语法createContext(logger, settings?)——创建用于处理的液体上下文
类型
LiquidContext- 包含日志、设置和可选路径的上下文对象LiquidSettings- 液体处理配置选项SourceMap——用于跟踪变换的源地图
详细API文档见TypeScript定义.
配置
您可以通过 LiquidSettings数字 :
const context = createContext(logger, {
conditions: true, // Enable/disable conditions
cycles: true, // Enable/disable cycles
substitutions: true, // Enable/disable substitutions
conditionsInCode: false, // Process conditions in code blocks
keepNotVar: false, // Keep {{ var }} if variable not found
});
许可证
麻省理工学院