@ cooklang/ cooklang (英语)
公务 库克朗 javaScript 和 TypeScript 的解析器.
这是一个高性能的WASM执行 由Rust提供动力 厨师 par. 它提供快速,可靠的食谱解析,并全力支持Cooklang规格.
安装
npm install @cooklang/cooklang
快速启动
import { Parser } from '@cooklang/cooklang';
const parser = new Parser();
const recipe = parser.parse(`
>> servings: 4
Add @salt and @pepper to taste.
Cook for ~{10%minutes}.
`);
console.log(recipe.sections[0].content);
为什么?
这个软件包使用WebAssembly来获取几个关键好处:
- 业绩: 本地速度解析,明显快于纯 JavaScript
- 可靠性: 与官方 Rust 解析器共享执行意味着跨平台的一致行为
- 可维持性: Cooklang 光谱的修改在 Rust 中执行一次, 在此自动可用
从@cooklang/cooklang-ts迁移
如果您是从上一个类型迁移到本地 @cooklang/cooklang-ts 软件包(v1.x),请参见 移徙指南。 。 。 .
关键差异 :
- 不同的软件包名称 :
@cooklang/cooklang-ts→@cooklang/cooklang - API 更改 : WASM 执行有不同的 API 表面
- 版本编号: 此软件包跟踪 Rust 核心版本( 目前为 0. 17. x)
API 参考
解析器
import { Parser } from '@cooklang/cooklang';
const parser = new Parser();
const recipe = parser.parse(recipeText);
食谱结构
解析的食谱包括:
interface Recipe {
sections: Section[];
metadata: Record<string, string>;
ingredients: Ingredient[];
cookware: Cookware[];
timers: Timer[];
}
帮助函数
import {
ingredient_should_be_listed,
ingredient_display_name,
cookware_should_be_listed,
cookware_display_name,
quantity_display,
grouped_quantity_display,
grouped_quantity_is_empty
} from '@cooklang/cooklang';
提取值
处理数量的工具功能:
import { getNumericValue, extractNumericRange } from '@cooklang/cooklang';
const value = ingredient.quantity?.value;
const numeric = getNumericValue(value); // 2.5
const range = extractNumericRange(value); // { start: 2, end: 3 }
版本同步
此软件包版本跟踪 Rust cooklang-rs 版本。 例如:
- 无
@cooklang/[email protected]= 粗鲁[email protected]
我们使用 0.x 版本来匹配 Rust 核心库. 剖析器已做好生产准备并积极维护. 当Rust核心达到1.0时,我们会撞到1.0.
浏览器支持
这个软件包在 :
- 节点.js 16+
- 现代浏览器(Chrome,Firefox,Safari,边缘)
- Bundlers (Webpack, Vite, Rollup等) (中文(简体) )
捐款
此软件包是 厨师 单相机 欢迎捐款!
许可证
麻省理工学院 - 看 自由主义