# YAML formatting

## Introduction

Wump's configuration is written inside of [`YAML`](https://yaml.org/), a "human friendly data serialization" language.\
The reason why Wump uses YAML is that it's an easy to read and edit data serialization language (and it's my primary data serialization language)

### Examples

Below are some examples on how YAML looks

{% tabs %}
{% tab title="Strings" %}
{% code title="strings.yaml" %}

```yaml
# Strings can be written in plain
key: value

# But it's preffered to put them inside of apostrophes
key: 'value'

# To escape an apostrophe, you can simply use 2 of them
key: 'Value''s sheep'

# You can make a multi-line using the > (mt/more than) symbol
key: >
val
ue

# Or you can add a \n after every line using the | (pipe) symbol
key: |
val
ue

# You can also use " (double quotes)
key: "Several lines of text,\n
containing \"double quotes\". Escapes (like \\n) work.\nIn addition,\n
newlines can be esc\\n
aped to prevent them from being converted to a space.\n
\n
Newlines can also be added by leaving a blank line.\n
Leading whitespace on lines is ignored."\n

```

{% endcode %}
{% endtab %}

{% tab title="Types" %}
{% code title="types.yml" %}

```yaml
# Some of the types that YAML supports:
string: 'hello'
boolean: true
integer: 1
float: 1.1
null: null
object:
    key: 'value'
array:
    - 'entry'
```

{% endcode %}
{% endtab %}

{% tab title="Objects" %}
{% code title="objects.yml" %}

```yaml
# YAML is sensetive about spaces, here's an example of a parent with 2 childs
parent:
    key: 'value'
    child:
        sibling:
            key: 'value'
    child:
        key: 'value'
```

{% endcode %}
{% endtab %}

{% tab title="Arrays (1/2)" %}
If a file only includes an array, it'll export as an array.

{% code title="array.yml" %}

```yaml
- 'This file'
- 'Exports as an array'
- true
- 10
```

{% endcode %}

exports as

{% code title="array.js" %}

```javascript
[
  'This file',
  'Exports as an array'
  true
  10
];
```

{% endcode %}
{% endtab %}

{% tab title="Arrays (2/2)" %}
{% code title="array.yml" %}

```yaml
# Arrays are written like this
parent:
    # An array with objects
    child: 
        - object: 1
        - object: 2
    child:
        # An array with a number and boolean inside
        array:
            - 1
            - true
```

{% endcode %}
{% endtab %}
{% endtabs %}
