黄瓜文档是开源的,任何人都可以贡献。事实上,我们非常感谢您的帮助!
每个页面都提供一个链接来编辑该页面的内容。您也可以在 Github 上的 docs.cucumber.io 项目 中进行更改。
流程
首次贡献者需要发送一个拉取请求。
一旦您的第一个拉取请求被接受,您将被提升为提交者,并获得对 GitHub 存储库的写入权限。作为提交者,您仍应使用拉取请求。
每个拉取请求都应仅修改/添加一个主题。请不要将许多不相关的文档更改合并到同一个拉取请求中。如果您想修改或添加多个主题,请每个主题打开一个拉取请求。
标题应说明您正在修改/创建哪些文档以及原因。例如 [docs] Add tags.md
或 [docs] Modify tags.md to explain boolean expressions
。
更通用的贡献流程在 黄瓜社区贡献指南 中描述。
讨论文档
获得有关您的写作的反馈非常棒。从小的更改开始,然后等待其他贡献者对拉取请求的反馈。
您可以加入 黄瓜 Discord 进行讨论或提出问题。
贡献内容
开始贡献的一个好方法是回答 黄瓜 Discord 或 GitHub 讨论板 上的问题。您可以将答案添加到文档中,如果目前缺失。
您还可以将问题添加到 常见问题解答页面 中,并提供指向文档相关部分的链接。
另一个选择是查找在 Github 上的 docs.cucumber.io 项目 中标记为 Good first issue
和/或 Help wanted
的问题。如果您对这些问题有任何疑问,可以在问题本身添加评论或在 Discord 上与我们联系。
一般写作风格
一般来说,文档应该简洁明了。
完美并非在于无所增减,而在于无可删减 - 安托万·德·圣-埃克苏佩里
一些指南
- 每个页面都应以一段信息/激励性文字开头
- 段落应足够短以易于阅读,但又足够长以展开一个想法
- 每个页面都应以一个
h1
标题开头。章节使用h2
;小节使用h3
- 换行。在大约第 80 列插入一个新行。这很重要,因为审查评论只能添加到一行中。
- 使用现在时态
- 使用中性语言,但尝试使其有点娱乐性(这很难!)
- 尽可能以平台中立的方式编写。黄瓜在多种语言中实现,文档不应假设特定的平台
- 对于所有代码示例(Gherkin 除外)以及与一种或多种特定语言相关的段落,使用 代码块
- 对于仅与一种或多种特定语言相关的文本,使用 语言块
- 根据需要标记 多语言页面
- 所有文档都应使用 英式英语。用 美式英语 贡献是可以的 - 编辑人员将进行翻译。
- 谨慎使用指向外部网站的链接
- 不要使用受版权保护的材料(图像、文本或其他)
- 插图很棒,但请使用低保真度图纸;黄瓜的设计团队将根据黄瓜的 品牌指南 重新创建插图
- 尝试使您的贡献与当前文档保持一致。例如
- 使用一致的措辞和格式
- 在关键词周围使用反引号;在这种情况下,关键词可以用大写字母编写,例如
Step Definition
- 在句子中引用概念时使用小写字母:例如“step definition”而不是“Step Definition”
教程写作风格
- 假设读者对主题知之甚少或一无所知
- 使用对话式风格
- 确保教程中的每个步骤都清晰描述
- 如果需要,描述每个步骤的结果应是什么
工具链
文档是用 Markdown 编写的。
文档存储在 Github 上的 docs.cucumber.io 项目 中。
菜单结构
页面显示在它们自己的部分中;这是文件所在的目录。默认情况下,一个部分中的页面按字母顺序排列,但可以通过指定 weight
来覆盖此顺序。
页面结构
- YAML 前置 matter(包含标题和摘要)
- 包含代码或特定于语言的文本的页面应标记为 多语言页面
- 指定
weight
以给出它们在菜单中的(相对)顺序(参见 #menu-structure)
- 介绍性段落
- 段落
来自 YAML 前置 matter 的页面标题将渲染为页面顶部的 <h1>
标题。以段落开头,而不是以标题开头。如果您以标题开头,则页面的顶部将有一个 h1
,紧随其后是另一个标题,这看起来不好。
多语言页面
页面可以包含相同内容的不同变体,这些变体有条件地显示特定编程语言的文本或源代码。
如果页面在 front-matter 中指定了以下内容,则将显示一个语言选择。
polyglot:
- java
- javascript
- ruby
- kotlin
- scala
- dotnet
目前支持以下语言
- Java
- JavaScript
- Ruby
- Kotlin(可选)
- Scala(可选)
.Net(可选;仅限某些页面)
我们尽可能希望有 Java、JavaScript 和 Ruby 的信息。
- 如果您只熟悉一种编程语言,请为该语言添加一个示例;其他人将为其他语言填补空白!
- 您可以在 Discord 上的该语言的帮助频道中或在您的 GitHub 拉取请求/问题中寻求有关其他语言的帮助
特定于语言的源代码和段落
在段落和围栏代码块周围包裹 {{% block %}}
短代码
{{% block "ruby" %}}
Put this in your `hello.rb`:
```ruby
puts "hello"
```
{{% /block %}}
{{% block "javascript" %}}
Put this in your `hello.js`:
```javascript
console.log("hello")
```
{{% /block %}}
{{% block "java" %}}
Put this in your `Hello.java`:
```java
System.out.println("hello")
```
{{%/* block "kotlin" %}}
Put this in your `Hello.kt`:
```kotlin
println("hello")
```
{{% /block %}}
{{% block "scala" %}}
Put this in your `Hello.scala`:
```scala
println("hello")
```
{{% /block %}}
请注意,您不能在语言块内部使用标题!如果您正在为特定语言编写一个包含内容的页面,那么它可能应该是一个单独的页面。或者,您可以为每种语言使用一个标题。
特定于语言的文本片段
对于应该仅为特定编程语言显示的文本片段,请使用 {{% text %}}
短代码将其包围
The preferred build tool is
{{% text "ruby" %}}Rake{{% /text %}}
{{% text "javascript" %}}Yarn{{% /text %}}
{{% text "java,kotlin,scala" %}}Maven{{% /text %}}.
对多种编程语言有效的段落或文本
请注意,您还可以使用短代码来表示对多种语言有效的段落或文本,而无需为每种语言重复它。为此,请以逗号 (,
) 分隔列出相关语言
{{% text "java,kotlin,scala" %}}Maven{{% /text %}}
其他短代码
其他短代码定义在 layouts/shortcodes
中。
方法与函数
为 stepdef 主体创建了一个特定的短代码
{{% stepdef-body %}}
使用此简码时,它将在文本中被替换为method
或function
,具体取决于编程语言。
表达式参数
为表达式参数创建了特定简码。
{{% expression-parameter %}}
使用此简码时,它将在文本中被替换为capture group
或output parameter
,具体取决于编程语言。
本地工作
有关如何本地工作和构建项目的详细信息,请参阅 README.md。