mirror of
https://github.com/LukeHagar/scalar-cheatsheet.git
synced 2025-12-06 04:21:15 +00:00
Create README.md
This commit is contained in:
144
README.md
Normal file
144
README.md
Normal file
@@ -0,0 +1,144 @@
|
|||||||
|
# YAML block scalars: an OpenAPI cheat sheet
|
||||||
|
|
||||||
|
Markdown (CommonMark) is supported on OpenAPI fields like `summary`, `description`, `externalDocs.description`, schema/parameter/response `description`, etc.
|
||||||
|
|
||||||
|
And the situations to use each Scalar type can be a bit confusing if you don't do it everyday.
|
||||||
|
|
||||||
|
## The types of Scalar
|
||||||
|
|
||||||
|
* `>` **Folded (prose)** — single newlines become spaces; blank lines = paragraph breaks. Best default for paragraphs.
|
||||||
|
* `|` **Literal (layout-sensitive)** — keep newlines exactly. Use for lists you want hard breaks, tables, or code you want untouched.
|
||||||
|
|
||||||
|
### Modifiers
|
||||||
|
|
||||||
|
* Add `-` to strip the final newline (`>-`, `|-`) to avoid trailing EOLs.
|
||||||
|
* Add `+` to keep all trailing newlines (`>+`, `|+`) if you *need* them.
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
* Single newline = **space** (no hard break). Use two spaces + newline **or** a blank line for a real break.
|
||||||
|
* Blank line separates paragraphs.
|
||||||
|
* Lists usually need a blank line before them for consistent rendering.
|
||||||
|
* Code: use fenced blocks ``` for best results.
|
||||||
|
|
||||||
|
## Prescriptions & examples
|
||||||
|
|
||||||
|
**1) Long paragraphs (default choice)**
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
description: >-
|
||||||
|
Returns a list of orders filtered by status and date.
|
||||||
|
Handles pagination and sorting.
|
||||||
|
````
|
||||||
|
|
||||||
|
**Rendered preview:**
|
||||||
|
|
||||||
|
> Returns a list of orders filtered by status and date. Handles pagination and sorting.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**2) Bullet lists (preserve structure)**
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
description: |
|
||||||
|
**Features**
|
||||||
|
- Fast
|
||||||
|
- Safe
|
||||||
|
- Boring
|
||||||
|
```
|
||||||
|
|
||||||
|
**Rendered preview:**
|
||||||
|
|
||||||
|
> **Features**
|
||||||
|
>
|
||||||
|
> * Fast
|
||||||
|
> * Safe
|
||||||
|
> * Boring
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**3) Paragraphs + list (mix)**
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
description: |
|
||||||
|
Use this endpoint to manage orders.
|
||||||
|
|
||||||
|
**Parameters**
|
||||||
|
- `limit` — max items
|
||||||
|
- `cursor` — pagination token
|
||||||
|
```
|
||||||
|
|
||||||
|
**Rendered preview:**
|
||||||
|
|
||||||
|
> Use this endpoint to manage orders.
|
||||||
|
>
|
||||||
|
> **Parameters**
|
||||||
|
>
|
||||||
|
> * `limit` — max items
|
||||||
|
> * `cursor` — pagination token
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**4) Code examples (literal or fenced)**
|
||||||
|
|
||||||
|
````yaml
|
||||||
|
description: |
|
||||||
|
Example:
|
||||||
|
```bash
|
||||||
|
curl -H "Authorization: Bearer <token>" /orders
|
||||||
|
```
|
||||||
|
````
|
||||||
|
|
||||||
|
**Rendered preview:**
|
||||||
|
|
||||||
|
> Example:
|
||||||
|
>
|
||||||
|
> ```bash
|
||||||
|
> curl -H "Authorization: Bearer <token>" /orders
|
||||||
|
> ```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**5) Tables (avoid folding that might reflow pipes)**
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
description: |
|
||||||
|
| Field | Type | Notes |
|
||||||
|
|------:|:-------:|------------|
|
||||||
|
| id | string | required |
|
||||||
|
| total | number | USD cents |
|
||||||
|
```
|
||||||
|
|
||||||
|
**Rendered preview:**
|
||||||
|
|
||||||
|
> | Field | Type | Notes |
|
||||||
|
> | ----: | :----: | --------- |
|
||||||
|
> | id | string | required |
|
||||||
|
> | total | number | USD cents |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**6) Multi-paragraph prose with soft wraps**
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
description: >
|
||||||
|
The export job runs asynchronously and may take several minutes.
|
||||||
|
|
||||||
|
Use the `GET /jobs/{id}` endpoint to poll status.
|
||||||
|
```
|
||||||
|
|
||||||
|
**Rendered preview:**
|
||||||
|
|
||||||
|
> The export job runs asynchronously and may take several minutes.
|
||||||
|
>
|
||||||
|
> Use the `GET /jobs/{id}` endpoint to poll status.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## TL;DR
|
||||||
|
|
||||||
|
| Scenario | Symbols | Meaning (newline behavior) |
|
||||||
|
| --------------------------------------------- | ------- | ------------------------------------------------------------------------- |
|
||||||
|
| Prose paragraph | > | **Folded + clip** — single newlines → spaces; keep **one** final newline. |
|
||||||
|
| Prose paragraph, no trailing `\n` | >- | **Folded + strip** — single newlines → spaces; **no** final newline. |
|
||||||
|
| Preserve manual line breaks | | | **Literal + clip** — keep all line breaks; keep **one** final newline. |
|
||||||
|
| Preserve manual line breaks, no trailing `\n` | |- | **Literal + strip** — keep all line breaks; **no** final newline. |
|
||||||
Reference in New Issue
Block a user