食谱系统构成了 HowToCook 仓库的核心架构,提供了一种结构化的方法来存储、组织和分类烹饪食谱。本文档解释了食谱如何在文件系统中存储,如何按类型进行分类,以及如何按难度级别进行分类。有关如何从这些食谱生成文档的信息,请参阅 文档系统。
食谱系统包含两个主要组件,它们协同工作以创建有组织的食谱集合
来源: README.md49-198 .github/readme-generate.js12-63
食谱存储在 dishes/ 目录下,并根据其类型组织到不同的类别中。每个类别是一个子目录,其中包含 Markdown 格式的单个食谱文件。
来源: README.md59-381 .github/readme-generate.js12-63
该仓库根据食谱的烹饪类型将食谱组织成不同的类别。这些类别在 readme-generate.js 脚本中定义,并反映在目录结构中。
| 类别 | 代码中的键 | 描述 | 示例 |
|---|---|---|---|
| 素菜 | vegetable_dish | Vegetable-based dishes | 西红柿炒鸡蛋, 炒青菜, 拔丝土豆 |
| 荤菜 | meat_dish | Meat-based dishes | 红烧肉, 宫保鸡丁, 回锅肉 |
| 水产 | aquatic | Seafood dishes | 清蒸鲈鱼, 红烧鱼, 水煮鱼 |
| 早餐 | breakfast | Breakfast items | 茶叶蛋, 煎饺, 温泉蛋 |
| 主食 | staple | Main staple foods | 米饭, 面条, 馒头 |
| 半成品加工 | semi-finished | Semi-prepared foods | 速冻水饺, 半成品意面 |
| 汤与粥 | soup | 汤和粥 | 西红柿鸡蛋汤, 皮蛋瘦肉粥 |
| 饮料 | drink | Beverages | 奶茶, 酸梅汤 |
| 酱料和其它材料 | condiment | Sauces and condiments | 油泼辣子, 葱油 |
| 甜品 | dessert | 甜点 | 提拉米苏, 戚风蛋糕 |
来源: README.md59-381 .github/readme-generate.js12-63
食谱系统包含一个使用 0-5 星级标准的难度评级机制。这有助于用户识别符合其烹饪技能水平的食谱。星级评分系统通过以下方式实现
starsystem/ 目录中的星级系统索引文件来源: .github/readme-generate.js65-123
starsystem/ 目录包含索引文件(0Star.md、1Star.md 等),列出了特定难度级别下的所有食谱。这些文件由 readme-generate.js 脚本自动生成。
食谱的星级分布如下
| 难度级别 | 文件 | 食谱数量 | 示例食谱 |
|---|---|---|---|
| 0 星 | 0Star.md | 1 | 广式萝卜牛腩 |
| 1 星 | 1Star.md | 23 | 吐司果酱, 微波炉荷包蛋, 牛奶燕麦 |
| 2 星 | 2Star.md | 72 | 白灼虾, 太阳蛋, 煎饺 |
| 3 星 | 3Star.md | 111 | 水煮牛肉, 宫保鸡丁, 麻婆豆腐 |
| 4 星 | 4Star.md | 79 | 糖醋排骨, 回锅肉, 红烧猪蹄 |
| 5 星 | 5Star.md | 19 | 戚风蛋糕, 水煮肉片, 酱牛肉 |
来源: starsystem/0Star.md starsystem/1Star.md starsystem/2Star.md starsystem/3Star.md starsystem/4Star.md starsystem/5Star.md
食谱系统自动化处理的核心是 readme-generate.js 脚本。该脚本会扫描食谱、计算星级并更新文档。
来源: .github/readme-generate.js65-123 .github/readme-generate.js125-208
readme-generate.js 脚本包含几个处理食谱的关键函数
countStars(filename):读取食谱文件并计算星号(★)的数量organizeByStars(dishesFolder, starsystemFolder):按星级对食谱进行分组并更新星级索引文件getAllMarkdown(dir):递归扫描目录以查找 Markdown 文件main():协调食谱处理和文档生成的整个过程来源: .github/readme-generate.js65-123 .github/readme-generate.js210-227 .github/readme-generate.js125-208
每个食谱都遵循标准格式,以确保整个仓库的一致性。新食谱应遵循位于 dishes/template/示例菜/示例菜.md 的模板。
典型的食谱结构包括
来源: README.md30-31
食谱系统与仓库中的其他系统集成,提供完整的食谱解决方案
来源: README.md27-31
HowToCook 仓库中的食谱系统为组织、分类和评级食谱提供了坚实的基础。通过标准化食谱格式并实施清晰的难度评级系统,它使用户能够轻松找到符合其烹饪技能水平和兴趣的食谱。自动化处理脚本可确保在将新食谱添加到仓库时,文档和分类系统保持最新。