菜单

菜谱组织

相关源文件

本页面介绍了 HowToCook 仓库中食谱的结构和分类方式。该系统使用户能够根据食谱类型(例如荤菜、素菜等)或难度级别(星级评分)轻松找到食谱。

有关食谱格式标准的信息,请参阅食谱格式标准

目录结构和分类

HowToCook 中的食谱主要按 dishes/ 目录下的分类进行组织。每个食谱都以 Markdown 文件的形式存储在其对应的分类子目录中。

该仓库将食谱组织成以下几类

类别目录描述
vegetable_dish/素菜
meat_dish/荤菜
aquatic/水产
breakfast/早餐
staple/主食
semi-finished/半成品加工
soup/汤与粥
drink/饮料
condiment/酱料和其它材料
dessert/甜品

来源:README.md59-380

分类组织图

来源:README.md59-380

难度评级系统

除了按类别组织外,食谱还通过星级评分系统按难度级别进行分类。这为用户提供了根据其烹饪技能水平查找食谱的另一种方式。

难度分类通过 starsystem/ 目录实现,其中包含代表每个难度级别的文件

文件难度级别描述
0Star.md0 星最简单的食谱
1Star.md1 星非常简单的食谱
2Star.md2 星简单的食谱
3Star.md3 星中等难度的食谱
4Star.md4 星困难的食谱
5Star.md5 星最具挑战性的食谱

每个星级评分文件都包含指向该难度级别所有食谱的链接。食谱的星级评分是通过计算食谱 markdown 文件内容中的“★”字符数量来确定的。

来源:starsystem/0Star.md starsystem/1Star.md starsystem/2Star.md starsystem/3Star.md starsystem/4Star.md starsystem/5Star.md

难度分类图

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

自动化组织系统

食谱组织通过 .github/readme-generate.js 脚本来维护,该脚本会分析食谱文件并自动生成相应的索引。该脚本执行以下几项重要功能:

  1. 读取 dishes/ 目录下的所有食谱 markdown 文件
  2. 计算每个文件中的“★”字符数以确定难度级别
  3. 使用指向相应难度食谱的链接来更新星级系统文件
  4. 按类别组织食谱,用于生成 README.md 和 mkdocs.yml

该脚本通过 GitHub Actions 自动执行,每当将更改推送到仓库时都会运行,确保组织结构始终保持最新。

来源:.github/readme-generate.js1-246 .github/templates/readme_template.md1-48

食谱组织实现

以下代码组件对食谱组织系统至关重要:

  1. 类别定义:在 .github/readme-generate.js 中的 categories 对象中定义
  2. 星级计数器countStars() 函数,用于分析食谱文件
  3. 星级系统生成器organizeByStars() 函数,用于创建和更新难度评分文件
  4. README 生成器main() 函数,用于创建全面的食谱索引

这些函数是如何交互的

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

结论

HowToCook 仓库中的双重组织系统提供了灵活的浏览和发现食谱的方式。通过同时按类别和难度对食谱进行组织,该仓库能够满足用户的不同需求。这种组织方式的自动化维护确保了一致性并减少了手动工作量,使得在添加新食谱或修改现有食谱时易于维护。