jbboehr/mustache-spec

Mustache 规范

安装: 175

依赖项: 1

建议者: 0

安全: 0

星星: 1

观察者: 3

分支: 71

语言:Nix

v1.1.2 2015-06-05 17:22 UTC

This package is auto-updated.

Last update: 2024-09-13 02:34:08 UTC


README

位于https://github.com/mustache/spec的仓库是 Mustache 的正式标准。它定义了解析 Mustache 模板语言的库(或其超集)的正常使用和边缘情况行为。

该规范作为一系列 YAML 文件开发,位于 specs 目录下。

版本控制

此规范正在语义版本化。大致来说,主版本变更将始终代表向后不兼容的变更,次版本变更将始终代表新的语言功能且将与向后兼容,而补丁(微小)版本变更将始终是错误修复。在语义版本化的目的上,公共 API 是 specs 目录的内容及其测试算法。

Mustache 实现“应”报告规范的最新版本(主版本和次版本号)。如果实现支持任何可选模块,它们“应”在版本号旁边附上注释来表示(例如,“vX.Y,包括 lambda”或“v.X.Y+λ”)。建议不支持至少 v1.0.0 此规范的实现将自身称为“类似 Mustache”或“受 Mustache 启发”。

其他格式

由于 YAML 是一种相对复杂的格式,并非每种语言都有良好的工具来处理它,所以我们还基于最佳努力提供规范的 JSON 版本。

这些应该与 YAML 规范相同,但如果需要重新生成它们,可以通过调用 rake build 来轻松重建。

值得注意的是,某些规范(尤其是 lambda 模块)依赖于 YAML “标签”来表示特殊类型的数据(例如源代码)。由于 JSON 没有表示这种类型的方法,因此注入一个特殊键(__tag__),其值为标签的名称。有关处理标记数据的更多信息,请参阅 TESTING.md

可选模块

以波浪号(~)开始的规范文件描述了可选模块。目前,唯一描述为可选的模块是关于 lambda 的支持。作为指导,当模块满足以下条件时,它可能成为可选性的候选者:

  • 它不影响语言的核心语法。
  • 它不会显著影响渲染模板的输出。
  • 它涉及实现语言特性或数据类型,这些特性或数据类型并非针对每种目标语言都常见或核心。
  • 实现不支持不会降低 Mustache 在目标语言中的使用。

例如,lambda 模块主要涉及处理特定数据类型(代码)。这可能是一些语言中难以支持的数据类型,并且这些语言的用户不会将其视为实现之间的“不一致”。

对于特定的语法定义或语法扩展的支持,最好在此核心规范之外,作为附加规范来管理。

强烈鼓励实现者支持他们合理能够支持的任何和所有模块。