# Working with TOML

Decode from TOML. Note that `yq` does not yet support outputting in TOML format (and therefore it cannot roundtrip)

## Parse: Simple

Given a sample.toml file of:

```toml
A = "hello"
B = 12

```

then

```bash
yq -oy '.' sample.toml
```

will output

```yaml
A: hello
B: 12
```

## Parse: Deep paths

Given a sample.toml file of:

```toml
person.name = "hello"
person.address = "12 cat st"

```

then

```bash
yq -oy '.' sample.toml
```

will output

```yaml
person:
  name: hello
  address: 12 cat st
```

## Encode: Scalar

Given a sample.toml file of:

```toml
person.name = "hello"
person.address = "12 cat st"

```

then

```bash
yq '.person.name' sample.toml
```

will output

```yaml
hello
```

## Parse: inline table

Given a sample.toml file of:

```toml
name = { first = "Tom", last = "Preston-Werner" }
```

then

```bash
yq -oy '.' sample.toml
```

will output

```yaml
name:
  first: Tom
  last: Preston-Werner
```

## Parse: Array Table

Given a sample.toml file of:

```toml

[owner.contact]
name = "Tom Preston-Werner"
age = 36

[[owner.addresses]]
street = "first street"
suburb = "ok"

[[owner.addresses]]
street = "second street"
suburb = "nice"

```

then

```bash
yq -oy '.' sample.toml
```

will output

```yaml
owner:
  contact:
    name: Tom Preston-Werner
    age: 36
  addresses:
    - street: first street
      suburb: ok
    - street: second street
      suburb: nice
```

## Parse: Array of Array Table

Given a sample.toml file of:

```toml

[[fruits]]
name = "apple"
[[fruits.varieties]]  # nested array of tables
name = "red delicious"
```

then

```bash
yq -oy '.' sample.toml
```

will output

```yaml
fruits:
  - name: apple
    varieties:
      - name: red delicious
```

## Parse: Empty Table

Given a sample.toml file of:

```toml

[dependencies]

```

then

```bash
yq -oy '.' sample.toml
```

will output

```yaml
dependencies: {}
```

## Roundtrip: inline table attribute

Given a sample.toml file of:

```toml
name = { first = "Tom", last = "Preston-Werner" }

```

then

```bash
yq '.' sample.toml
```

will output

```yaml
name = { first = "Tom", last = "Preston-Werner" }
```

## Roundtrip: table section

Given a sample.toml file of:

```toml
[owner.contact]
name = "Tom"
age = 36

```

then

```bash
yq '.' sample.toml
```

will output

```yaml
[owner.contact]
name = "Tom"
age = 36
```

## Roundtrip: array of tables

Given a sample.toml file of:

```toml
[[fruits]]
name = "apple"
[[fruits.varieties]]
name = "red delicious"

```

then

```bash
yq '.' sample.toml
```

will output

```yaml
[[fruits]]
name = "apple"
[[fruits.varieties]]
name = "red delicious"
```

## Roundtrip: arrays and scalars

Given a sample.toml file of:

```toml
A = ["hello", ["world", "again"]]
B = 12

```

then

```bash
yq '.' sample.toml
```

will output

```yaml
A = ["hello", ["world", "again"]]
B = 12
```

## Roundtrip: simple

Given a sample.toml file of:

```toml
A = "hello"
B = 12

```

then

```bash
yq '.' sample.toml
```

will output

```yaml
A = "hello"
B = 12
```

## Roundtrip: deep paths

Given a sample.toml file of:

```toml
[person]
name = "hello"
address = "12 cat st"

```

then

```bash
yq '.' sample.toml
```

will output

```yaml
[person]
name = "hello"
address = "12 cat st"
```

## Roundtrip: empty array

Given a sample.toml file of:

```toml
A = []

```

then

```bash
yq '.' sample.toml
```

will output

```yaml
A = []
```

## Roundtrip: sample table

Given a sample.toml file of:

```toml
var = "x"

[owner.contact]
name = "Tom Preston-Werner"
age = 36

```

then

```bash
yq '.' sample.toml
```

will output

```yaml
var = "x"

[owner.contact]
name = "Tom Preston-Werner"
age = 36
```

## Roundtrip: empty table

Given a sample.toml file of:

```toml
[dependencies]

```

then

```bash
yq '.' sample.toml
```

will output

```yaml
[dependencies]
```

## Roundtrip: comments

Given a sample.toml file of:

```toml
# This is a comment
A = "hello"  # inline comment
B = 12

# Table comment
[person]
name = "Tom"  # name comment

```

then

```bash
yq '.' sample.toml
```

will output

```yaml
# This is a comment
A = "hello"  # inline comment
B = 12

# Table comment
[person]
name = "Tom"  # name comment
```

## Roundtrip: sample from web

Given a sample.toml file of:

```toml
# This is a TOML document
title = "TOML Example"

[owner]
name = "Tom Preston-Werner"
dob = 1979-05-27T07:32:00-08:00

[database]
enabled = true
ports = [8000, 8001, 8002]
data = [["delta", "phi"], [3.14]]
temp_targets = { cpu = 79.5, case = 72.0 }

# [servers] yq can't do this one yet
[servers.alpha]
ip = "10.0.0.1"
role = "frontend"

[servers.beta]
ip = "10.0.0.2"
role = "backend"

```

then

```bash
yq '.' sample.toml
```

will output

```yaml
# This is a TOML document
title = "TOML Example"

[owner]
name = "Tom Preston-Werner"
dob = 1979-05-27T07:32:00-08:00

[database]
enabled = true
ports = [8000, 8001, 8002]
data = [["delta", "phi"], [3.14]]
temp_targets = { cpu = 79.5, case = 72.0 }

# [servers] yq can't do this one yet
[servers.alpha]
ip = "10.0.0.1"
role = "frontend"

[servers.beta]
ip = "10.0.0.2"
role = "backend"
```

## Encode: Simple mapping produces table section

Given a sample.yml file of:

```yaml
arg:
  hello: foo

```

then

```bash
yq -o toml '.' sample.yml
```

will output

```toml
[arg]
hello = "foo"
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://mikefarah.gitbook.io/yq/usage/toml.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
