docs: add recommended media type & file extension

This commit is contained in:
Johann Schopplich
2025-11-23 18:51:50 +01:00
parent 7a05d03e73
commit a200a9fa54
8 changed files with 54 additions and 12 deletions

View File

@@ -136,6 +136,26 @@ hikes[3]{id,name,distanceKm,elevationGain,companion,wasSunny}:
- 🧺 **Tabular Arrays:** Uniform arrays of objects collapse into tables that declare fields once and stream row values line by line. - 🧺 **Tabular Arrays:** Uniform arrays of objects collapse into tables that declare fields once and stream row values line by line.
- 🌐 **Multi-Language Ecosystem:** Spec-driven implementations in TypeScript, Python, Go, Rust, .NET, and other languages. - 🌐 **Multi-Language Ecosystem:** Spec-driven implementations in TypeScript, Python, Go, Rust, .NET, and other languages.
## Media Type & File Extension
For HTTP and content-typeaware contexts, TOON defines:
- **Media type (provisional):** `text/toon`
- **Charset:** Always UTF-8 (`charset=utf-8` MAY be specified; if omitted, UTF-8 MUST be assumed)
- **File extension:** `.toon`
Example HTTP usage:
```http
GET /resource HTTP/1.1
Accept: text/toon
HTTP/1.1 200 OK
Content-Type: text/toon
```
See [SPEC.md §18.2](https://github.com/toon-format/spec/blob/main/SPEC.md#182-provisional-media-type) for details.
## When Not to Use TOON ## When Not to Use TOON
TOON excels with uniform arrays of objects, but there are cases where other formats are better: TOON excels with uniform arrays of objects, but there are cases where other formats are better:
@@ -889,17 +909,20 @@ Follow the detailed [LLM integration guide](https://toonformat.dev/guide/llm-pro
Comprehensive guides, references, and resources to help you get the most out of the TOON format and tools. Comprehensive guides, references, and resources to help you get the most out of the TOON format and tools.
**Getting Started** **Getting Started:**
- [Introduction & Installation](https://toonformat.dev/guide/getting-started) What TOON is, when to use it, first steps - [Introduction & Installation](https://toonformat.dev/guide/getting-started) What TOON is, when to use it, first steps
- [Format Overview](https://toonformat.dev/guide/format-overview) Complete syntax with examples - [Format Overview](https://toonformat.dev/guide/format-overview) Complete syntax with examples
- [Benchmarks](https://toonformat.dev/guide/benchmarks) Accuracy & token efficiency results - [Benchmarks](https://toonformat.dev/guide/benchmarks) Accuracy & token efficiency results
**Tools & Integration** **Tools & Integration:**
- [CLI](https://toonformat.dev/cli/) Command-line tool for JSON↔TOON conversions - [CLI](https://toonformat.dev/cli/) Command-line tool for JSON↔TOON conversions
- [Using TOON with LLMs](https://toonformat.dev/guide/llm-prompts) Prompting strategies & validation - [Using TOON with LLMs](https://toonformat.dev/guide/llm-prompts) Prompting strategies & validation
- [Playgrounds](https://toonformat.dev/ecosystem/tools-and-playgrounds) Interactive tools - [Playgrounds](https://toonformat.dev/ecosystem/tools-and-playgrounds) Interactive tools
**Reference** **Reference:**
- [API Reference](https://toonformat.dev/reference/api) TypeScript/JavaScript encode/decode API - [API Reference](https://toonformat.dev/reference/api) TypeScript/JavaScript encode/decode API
- [Syntax Cheatsheet](https://toonformat.dev/reference/syntax-cheatsheet) Quick format lookup - [Syntax Cheatsheet](https://toonformat.dev/reference/syntax-cheatsheet) Quick format lookup
- [Specification v2.0](https://github.com/toon-format/spec/blob/main/SPEC.md) Normative rules for implementers - [Specification v2.0](https://github.com/toon-format/spec/blob/main/SPEC.md) Normative rules for implementers
@@ -907,7 +930,7 @@ Comprehensive guides, references, and resources to help you get the most out of
## Other Implementations ## Other Implementations
> [!NOTE] > [!NOTE]
> When implementing TOON in other languages, please follow the [specification](https://github.com/toon-format/spec/blob/main/SPEC.md) (currently v2.0) to ensure compatibility across implementations. The [conformance tests](https://github.com/toon-format/spec/tree/main/tests) provide language-agnostic test fixtures that validate your implementations. > When implementing TOON in other languages, please follow the [Specification](https://github.com/toon-format/spec/blob/main/SPEC.md) (currently v2.0) to ensure compatibility across implementations. The [conformance tests](https://github.com/toon-format/spec/tree/main/tests) provide language-agnostic test fixtures that validate your implementations.
### Official Implementations ### Official Implementations

View File

@@ -87,6 +87,8 @@ cat data.toon | toon --decode
::: :::
By convention, TOON files use the `.toon` extension and the provisional media type `text/toon` (see [spec §18.2](https://github.com/toon-format/spec/blob/main/SPEC.md#182-provisional-media-type)).
### Standard Input ### Standard Input
Omit the input argument or use `-` to read from stdin. This enables piping data directly from other commands: Omit the input argument or use `-` to read from stdin. This enables piping data directly from other commands:

View File

@@ -1,6 +1,6 @@
# Implementations # Implementations
TOON has official and community implementations across multiple programming languages. All implementations are intended to conform to the same [specification](https://github.com/toon-format/spec) to ensure compatibility and interoperability. TOON has official and community implementations across multiple programming languages. All implementations are intended to conform to the same [Specification](https://github.com/toon-format/spec) to ensure compatibility and interoperability.
The code examples throughout this documentation site use the TypeScript implementation by default, but the format and concepts apply equally to all languages. The code examples throughout this documentation site use the TypeScript implementation by default, but the format and concepts apply equally to all languages.

View File

@@ -53,4 +53,4 @@ const toon = encode(data)
const data = decode(toon) const data = decode(toon)
``` ```
See the [API reference](/reference/api) for details. See the [API Reference](/reference/api) for details.

View File

@@ -234,8 +234,20 @@ console.log(JSON.stringify(data, null, 2))
Round-tripping is lossless: `decode(encode(x))` always equals `x` (after normalization of non-JSON types like `Date`, `NaN`, etc.). Round-tripping is lossless: `decode(encode(x))` always equals `x` (after normalization of non-JSON types like `Date`, `NaN`, etc.).
## Media Type & File Extension
When using TOON over HTTP or in content-typeaware systems:
- Use `text/toon` as the media type (provisional; see [spec §18.2](https://github.com/toon-format/spec/blob/main/SPEC.md#182-provisional-media-type))
- Use `.toon` as the standard file extension
- TOON is always UTF-8 encoded; `charset=utf-8` is optional
Example:
```http
Content-Type: text/toon; charset=utf-8
```
## Where to Go Next ## Where to Go Next
Now that you've seen your first TOON document, read the [Format Overview](/guide/format-overview) for complete syntax details (objects, arrays, quoting rules, key folding), then explore [Using TOON with LLMs](/guide/llm-prompts) to see how to use it effectively in prompts. For implementation details, check the [API reference](/reference/api) (TypeScript) or the [specification](/reference/spec) (language-agnostic normative rules). Now that you've seen your first TOON document, read the [Format Overview](/guide/format-overview) for complete syntax details (objects, arrays, quoting rules, key folding), then explore [Using TOON with LLMs](/guide/llm-prompts) to see how to use it effectively in prompts. For implementation details, check the [API Reference](/reference/api) (TypeScript) or the [Specification](/reference/spec) (language-agnostic normative rules).
For large datasets or streaming use-cases, see `encodeLines`, `decodeFromLines`, and `decodeStream` in the [API reference](/reference/api).

View File

@@ -83,7 +83,7 @@ catch (error) {
} }
``` ```
Strict mode checks counts, indentation, and escaping so you can detect truncation or malformed TOON. For complete details, see the [API reference](/reference/api#decode). Strict mode checks counts, indentation, and escaping so you can detect truncation or malformed TOON. For complete details, see the [API Reference](/reference/api#decode).
## Delimiter Choices for Token Efficiency ## Delimiter Choices for Token Efficiency
@@ -116,7 +116,7 @@ The CLI also supports streaming for memory-efficient JSON-to-TOON conversion:
toon large-dataset.json --output output.toon toon large-dataset.json --output output.toon
``` ```
This streaming approach prevents out-of-memory errors when preparing large context windows for LLMs. For complete details on `encodeLines()`, see the [API reference](/reference/api#encodelines). This streaming approach prevents out-of-memory errors when preparing large context windows for LLMs. For complete details on `encodeLines()`, see the [API Reference](/reference/api#encodelines).
**Consuming streaming LLM outputs:** If your LLM client exposes streaming text and you buffer by lines, you can decode TOON incrementally: **Consuming streaming LLM outputs:** If your LLM client exposes streaming text and you buffer by lines, you can decode TOON incrementally:

View File

@@ -11,6 +11,11 @@ You don't need this page to *use* TOON. It's mainly for implementers and contrib
**Spec v{{ $spec.version }}** (2025-11-10) is the current stable version. **Spec v{{ $spec.version }}** (2025-11-10) is the current stable version.
The spec defines a provisional media type and file extension in §18.2:
- **Media type:** `text/toon` (provisional, UTF-8 only)
- **File extension:** `.toon`
## Guided Tour of the Spec ## Guided Tour of the Spec
### Core Concepts ### Core Concepts

View File

@@ -1,6 +1,6 @@
# Syntax Cheatsheet # Syntax Cheatsheet
Quick reference for mapping JSON to TOON format. For rigorous, normative syntax rules and edge cases, see the [specification](/reference/spec). Quick reference for mapping JSON to TOON format. For rigorous, normative syntax rules and edge cases, see the [Specification](/reference/spec).
## Objects ## Objects