菜单

菜谱系统

相关源文件

目的与范围

食谱系统构成了 HowToCook 仓库的核心架构,提供了一种结构化的方法来存储、组织和分类烹饪食谱。本文档解释了食谱如何在文件系统中存储,如何按类型进行分类,以及如何按难度级别进行分类。有关如何从这些食谱生成文档的信息,请参阅 文档系统

系统概览

食谱系统包含两个主要组件,它们协同工作以创建有组织的食谱集合

  1. 食谱组织:文件结构和按类型对食谱进行分类
  2. 星级评分系统:按难度级别(0-5 星)对食谱进行分类

来源: README.md49-198 .github/readme-generate.js12-63

菜谱组织

目录结构

食谱存储在 dishes/ 目录下,并根据其类型组织到不同的类别中。每个类别是一个子目录,其中包含 Markdown 格式的单个食谱文件。

来源: README.md59-381 .github/readme-generate.js12-63

菜谱类别

该仓库根据食谱的烹饪类型将食谱组织成不同的类别。这些类别在 readme-generate.js 脚本中定义,并反映在目录结构中。

类别代码中的键描述示例
素菜vegetable_dishVegetable-based dishes西红柿炒鸡蛋, 炒青菜, 拔丝土豆
荤菜meat_dishMeat-based dishes红烧肉, 宫保鸡丁, 回锅肉
水产aquaticSeafood dishes清蒸鲈鱼, 红烧鱼, 水煮鱼
早餐breakfastBreakfast items茶叶蛋, 煎饺, 温泉蛋
主食stapleMain staple foods米饭, 面条, 馒头
半成品加工semi-finishedSemi-prepared foods速冻水饺, 半成品意面
汤与粥soup汤和粥西红柿鸡蛋汤, 皮蛋瘦肉粥
饮料drinkBeverages奶茶, 酸梅汤
酱料和其它材料condimentSauces and condiments油泼辣子, 葱油
甜品dessert甜点提拉米苏, 戚风蛋糕

来源: README.md59-381 .github/readme-generate.js12-63

星级评分系统

食谱系统包含一个使用 0-5 星级标准的难度评级机制。这有助于用户识别符合其烹饪技能水平的食谱。星级评分系统通过以下方式实现

  1. 单个食谱文件中的星级注释(★ 符号)
  2. 位于 starsystem/ 目录中的星级系统索引文件

星级注释过程

来源: .github/readme-generate.js65-123

星级索引文件

starsystem/ 目录包含索引文件(0Star.md1Star.md 等),列出了特定难度级别下的所有食谱。这些文件由 readme-generate.js 脚本自动生成。

食谱的星级分布如下

难度级别文件食谱数量示例食谱
0 星0Star.md1广式萝卜牛腩
1 星1Star.md23吐司果酱, 微波炉荷包蛋, 牛奶燕麦
2 星2Star.md72白灼虾, 太阳蛋, 煎饺
3 星3Star.md111水煮牛肉, 宫保鸡丁, 麻婆豆腐
4 星4Star.md79糖醋排骨, 回锅肉, 红烧猪蹄
5 星5Star.md19戚风蛋糕, 水煮肉片, 酱牛肉

来源: 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 脚本包含几个处理食谱的关键函数

  1. countStars(filename):读取食谱文件并计算星号(★)的数量
  2. organizeByStars(dishesFolder, starsystemFolder):按星级对食谱进行分组并更新星级索引文件
  3. getAllMarkdown(dir):递归扫描目录以查找 Markdown 文件
  4. main():协调食谱处理和文档生成的整个过程

来源: .github/readme-generate.js65-123 .github/readme-generate.js210-227 .github/readme-generate.js125-208

食谱文件结构

每个食谱都遵循标准格式,以确保整个仓库的一致性。新食谱应遵循位于 dishes/template/示例菜/示例菜.md 的模板。

典型的食谱结构包括

  1. 标题:菜肴的名称
  2. 难度评级:用星号(★)表示
  3. 配料:所需配料的精确测量
  4. 步骤:详细的烹饪说明
  5. 技巧:其他注意事项或建议

来源: README.md30-31

与其他系统集成

食谱系统与仓库中的其他系统集成,提供完整的食谱解决方案

来源: README.md27-31

结论

HowToCook 仓库中的食谱系统为组织、分类和评级食谱提供了坚实的基础。通过标准化食谱格式并实施清晰的难度评级系统,它使用户能够轻松找到符合其烹饪技能水平和兴趣的食谱。自动化处理脚本可确保在将新食谱添加到仓库时,文档和分类系统保持最新。