Ambrosia 语法
Ambrosia 是一个 Markup Language, 用于描述组件化的食谱. 我们认为食谱是步骤的集合, 而食材是输入的参数. 通过对步骤的分析, 其实是可以直接列出食材清单的. 因此 Ambrosia 的重点在于描述步骤,而非食材清单。
一个完整的食谱分为两个部分:
- Metadata
- 操作步骤
Metadata
Metadata 是一系列键值对, 是嵌入在食谱开头的一组信息. 其可以是任何内容, 取决于你的需求. 其格式如下:
>> yield: 800g
>> time: 90 分钟
Metadata 会以 >>
开头,以换行符结束. 通过一个冒号来分隔键和值.
步骤
在 Ambrosia.Kitchen 中我们将多个步骤整合为一个大步骤,这些步骤会使用同一批食材, 并通常会有一个或多个阶段性产物。这样能帮助读者更好的规划做菜的过程。
我们使用 -
来标记一个步骤组,在这个步骤组内所有被提及的食材会被收集到该组内。在一个步骤中, 所有食材被认为是一起操作的, 不区分先后关系.
步骤内通过纯文本描述操作内容即可, 仅需要对食材, 时间和特殊器材进行标注即可.
- 在煎锅中以大火将@牛绞肉{1.3kg}用@精制油炸油{75g}煎至深褐色.
将牛肉放到滤网里, 架在大碗上过滤. 取 40 g 滤下的油汁. 牛绞肉留待后续步骤使用.
- 将上一步的油脂放入#高压锅 中, 并加入@甜洋葱[切薄片]{500g}, @胡萝卜[切薄片]{500g}, @韭葱[切薄片]{250g}, @蒜[切薄片]{25g}
以中火不加盖煎炒至蔬菜完全软化并呈褐色.
通过上述写法,可获得两个步骤组,分别是煎牛肉末并过滤和高压锅内煎炒蔬菜两步。二者使用不同的食材。
食材
可以使用以下语法来指定食材:
- 加入@酱油
并指定其重量:
- 加入@酱油{25g}
通过中括号指定前置处理步骤:
- 加入@姜[去皮切圆片]{10g}
指定其为可选食材(?)或主要食材(!):
- 将@!黑鳕鱼[带皮]{450g}分别放入夹链袋
- 加入@?味精{5g}
在步骤后使用 --
标记参考单位换算方式:
- 将@!黑鳕鱼[带皮]{450g}分别放入夹链袋 -- 黑鳕鱼:225g/片
食谱的组合在本项目中是一个非常重要的概念,通过路径即可引用其他食谱的产物:
- 将@!../../base/stock-broth/鸡白高汤.am{1 L}煮沸后立刻倒入#法式压滤壶 中微做搅拌
如果使用多单词的英文食材, 且没有标记其前置处理或使用重量, 空格可能会影响到食材的判定, 可通过括号来指定食材范围, 或使用无内容的重量来表示"适量/to taste":
- Add @(kosher salt) to the pan.
- Add @kosher salt{} to the pan.
时间
通过波浪符指定时间:
以 100 kPa 的表压力高压烹煮 ~{45 分钟}.
变体(Subject to change)
在 Ambrosia.Kitchen 中我们通过指定变体名来定义变体步骤:
- [- 地中海油封蔬菜 -] 以@巴萨米克醋{6 g}, @盐 和罐中的橄榄油调味.
[- 油封手指小土豆 -] 沥干土豆, 用@盐 调味后趁热使用.
按如上方式,可在同一个步骤组中定义多个变体,随页面使用不同变体时展示不同的步骤。