diff --git a/tests/force_optional.adoc b/tests/force_optional.adoc
index bc42008e4..6b1c9b62a 100644
--- a/tests/force_optional.adoc
+++ b/tests/force_optional.adoc
@@ -21,12 +21,6 @@ My var3. +
**Hidden**: var could be hidden.
|
-**var4** +
-`https://rougail.readthedocs.io/en/latest/variable.html#variables-types[string]` `mandatory` `__hidden__` |
-My var4. +
-**Hidden**: when the variable "a.unknown.variable" has the value "value".
-|
-
**var5** +
`https://rougail.readthedocs.io/en/latest/variable.html#variables-types[string]` `mandatory` |
My var5. +
diff --git a/tests/results/test/00_2default_calculated_variable.adoc b/tests/results/test/00_2default_calculated_variable.adoc
new file mode 100644
index 000000000..c75d4414c
--- /dev/null
+++ b/tests/results/test/00_2default_calculated_variable.adoc
@@ -0,0 +1,17 @@
+[cols="1a,1a"]
+|====
+| Variable | Description
+|
+
+**var1** +
+`https://rougail.readthedocs.io/en/latest/variable.html#variables-types[domainname]` `basic` `mandatory` `unique` `multiple` |
+A first variable. +
+**Validator**: the domain name can be an IP
+|
+
+**var2** +
+`https://rougail.readthedocs.io/en/latest/variable.html#variables-types[domainname]` `standard` `mandatory` `unique` `multiple` |
+A second variable. +
+**Default**: the value of the variable "var1".
+|====
+
diff --git a/tests/results/test/00_2default_calculated_variable.json b/tests/results/test/00_2default_calculated_variable.json
new file mode 100644
index 000000000..73f564872
--- /dev/null
+++ b/tests/results/test/00_2default_calculated_variable.json
@@ -0,0 +1,78 @@
+{
+ "var1": {
+ "type": "variable",
+ "properties": [
+ {
+ "type": "type",
+ "name": "domainname"
+ },
+ {
+ "type": "mode",
+ "name": "basic"
+ },
+ {
+ "type": "property",
+ "name": "mandatory"
+ },
+ {
+ "type": "property",
+ "name": "unique"
+ },
+ {
+ "type": "multiple",
+ "name": "multiple"
+ }
+ ],
+ "validators": {
+ "name": "Validator",
+ "values": "the domain name can be an IP"
+ },
+ "paths": [
+ "var1"
+ ],
+ "names": [
+ "var1"
+ ],
+ "descriptions": [
+ "A first variable."
+ ]
+ },
+ "var2": {
+ "type": "variable",
+ "default": {
+ "name": "Default",
+ "values": "the value of the variable \"var1\"."
+ },
+ "properties": [
+ {
+ "type": "type",
+ "name": "domainname"
+ },
+ {
+ "type": "mode",
+ "name": "standard"
+ },
+ {
+ "type": "property",
+ "name": "mandatory"
+ },
+ {
+ "type": "property",
+ "name": "unique"
+ },
+ {
+ "type": "multiple",
+ "name": "multiple"
+ }
+ ],
+ "paths": [
+ "var2"
+ ],
+ "names": [
+ "var2"
+ ],
+ "descriptions": [
+ "A second variable."
+ ]
+ }
+}
\ No newline at end of file
diff --git a/tests/results/test/00_2default_calculated_variable.md b/tests/results/test/00_2default_calculated_variable.md
new file mode 100644
index 000000000..7253f91cf
--- /dev/null
+++ b/tests/results/test/00_2default_calculated_variable.md
@@ -0,0 +1,5 @@
+| Variable | Description |
+|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| **var1**
[`domainname`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `basic` `mandatory` `unique` `multiple` | A first variable.
**Validator**: the domain name can be an IP |
+| **var2**
[`domainname`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` `unique` `multiple` | A second variable.
**Default**: the value of the variable "var1". |
+
diff --git a/tests/results/test/00_2default_calculated_variable.sh b/tests/results/test/00_2default_calculated_variable.sh
new file mode 100644
index 000000000..8f226f1b3
--- /dev/null
+++ b/tests/results/test/00_2default_calculated_variable.sh
@@ -0,0 +1,11 @@
+┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
+┃[1m [0m[1mVariable [0m[1m [0m┃[1m [0m[1mDescription [0m[1m [0m┃
+┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
+│ [1mvar1[0m │ A first variable. │
+│ [1;7m domainname [0m [1;7m basic [0m [1;7m mandatory [0m [1;7m [0m │ [1mValidator[0m: the domain name can be an │
+│ [1;7munique [0m [1;7m multiple [0m │ IP │
+├───────────────────────────────────────┼──────────────────────────────────────┤
+│ [1mvar2[0m │ A second variable. │
+│ [1;7m domainname [0m [1;7m standard [0m [1;7m mandatory [0m [1;7m [0m │ [1mDefault[0m: the value of the variable │
+│ [1;7munique [0m [1;7m multiple [0m │ "var1". │
+└───────────────────────────────────────┴──────────────────────────────────────┘
diff --git a/tests/results/test/00_6ip.adoc b/tests/results/test/00_6ip.adoc
new file mode 100644
index 000000000..924b4c27b
--- /dev/null
+++ b/tests/results/test/00_6ip.adoc
@@ -0,0 +1,30 @@
+[cols="1a,1a"]
+|====
+| Variable | Description
+|
+
+**var1** +
+`https://rougail.readthedocs.io/en/latest/variable.html#variables-types[IP]` `standard` `mandatory` |
+An IP. +
+**Validator**: reserved IP are allowed +
+**Default**: 1.1.1.1
+|
+
+**var2** +
+`https://rougail.readthedocs.io/en/latest/variable.html#variables-types[IP]` `standard` `mandatory` |
+An IP in CIDR format. +
+**Validators**:
+
+* IP must be in CIDR format
+* reserved IP are allowed
+
+**Default**: 1.1.1.1/24 +
+**Example**: 192.168.0.128/25
+|
+
+**var3** +
+`https://rougail.readthedocs.io/en/latest/variable.html#variables-types[cidr]` `standard` `mandatory` |
+An IP in CIDR format with obsolete CIDR type. +
+**Default**: 1.1.1.1/24
+|====
+
diff --git a/tests/results/test/00_6ip.json b/tests/results/test/00_6ip.json
new file mode 100644
index 000000000..d5c17d718
--- /dev/null
+++ b/tests/results/test/00_6ip.json
@@ -0,0 +1,107 @@
+{
+ "var1": {
+ "type": "variable",
+ "default": {
+ "name": "Default",
+ "values": "1.1.1.1"
+ },
+ "properties": [
+ {
+ "type": "type",
+ "name": "IP"
+ },
+ {
+ "type": "mode",
+ "name": "standard"
+ },
+ {
+ "type": "property",
+ "name": "mandatory"
+ }
+ ],
+ "validators": {
+ "name": "Validator",
+ "values": "reserved IP are allowed"
+ },
+ "paths": [
+ "var1"
+ ],
+ "names": [
+ "var1"
+ ],
+ "descriptions": [
+ "An IP."
+ ]
+ },
+ "var2": {
+ "type": "variable",
+ "default": {
+ "name": "Default",
+ "values": "1.1.1.1/24"
+ },
+ "properties": [
+ {
+ "type": "type",
+ "name": "IP"
+ },
+ {
+ "type": "mode",
+ "name": "standard"
+ },
+ {
+ "type": "property",
+ "name": "mandatory"
+ }
+ ],
+ "validators": {
+ "name": "Validators",
+ "values": [
+ "IP must be in CIDR format",
+ "reserved IP are allowed"
+ ]
+ },
+ "paths": [
+ "var2"
+ ],
+ "names": [
+ "var2"
+ ],
+ "descriptions": [
+ "An IP in CIDR format."
+ ],
+ "examples": {
+ "name": "Example",
+ "values": "192.168.0.128/25"
+ }
+ },
+ "var3": {
+ "type": "variable",
+ "default": {
+ "name": "Default",
+ "values": "1.1.1.1/24"
+ },
+ "properties": [
+ {
+ "type": "type",
+ "name": "cidr"
+ },
+ {
+ "type": "mode",
+ "name": "standard"
+ },
+ {
+ "type": "property",
+ "name": "mandatory"
+ }
+ ],
+ "paths": [
+ "var3"
+ ],
+ "names": [
+ "var3"
+ ],
+ "descriptions": [
+ "An IP in CIDR format with obsolete CIDR type."
+ ]
+ }
+}
\ No newline at end of file
diff --git a/tests/results/test/00_6ip.md b/tests/results/test/00_6ip.md
new file mode 100644
index 000000000..48e58a52d
--- /dev/null
+++ b/tests/results/test/00_6ip.md
@@ -0,0 +1,6 @@
+| Variable | Description |
+|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| **var1**
[`IP`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` | An IP.
**Validator**: reserved IP are allowed
**Default**: 1.1.1.1 |
+| **var2**
[`IP`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` | An IP in CIDR format.
**Validators**:
- IP must be in CIDR format
- reserved IP are allowed
**Default**: 1.1.1.1/24
**Example**: 192.168.0.128/25 |
+| **var3**
[`cidr`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` | An IP in CIDR format with obsolete CIDR type.
**Default**: 1.1.1.1/24 |
+
diff --git a/tests/results/test/00_6ip.sh b/tests/results/test/00_6ip.sh
new file mode 100644
index 000000000..16ccc9e4f
--- /dev/null
+++ b/tests/results/test/00_6ip.sh
@@ -0,0 +1,18 @@
+┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
+┃[1m [0m[1mVariable [0m[1m [0m┃[1m [0m[1mDescription [0m[1m [0m┃
+┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
+│ [1mvar1[0m │ An IP. │
+│ [1;7m IP [0m [1;7m standard [0m [1;7m mandatory [0m │ [1mValidator[0m: reserved IP are allowed │
+│ │ [1mDefault[0m: 1.1.1.1 │
+├───────────────────────────────────────┼──────────────────────────────────────┤
+│ [1mvar2[0m │ An IP in CIDR format. │
+│ [1;7m IP [0m [1;7m standard [0m [1;7m mandatory [0m │ [1mValidators[0m: │
+│ │ - IP must be in CIDR format │
+│ │ - reserved IP are allowed │
+│ │ [1mDefault[0m: 1.1.1.1/24 │
+│ │ [1mExample[0m: 192.168.0.128/25 │
+├───────────────────────────────────────┼──────────────────────────────────────┤
+│ [1mvar3[0m │ An IP in CIDR format with obsolete │
+│ [1;7m cidr [0m [1;7m standard [0m [1;7m mandatory [0m │ CIDR type. │
+│ │ [1mDefault[0m: 1.1.1.1/24 │
+└───────────────────────────────────────┴──────────────────────────────────────┘
diff --git a/tests/results/test/00_6network.adoc b/tests/results/test/00_6network.adoc
new file mode 100644
index 000000000..097b236b4
--- /dev/null
+++ b/tests/results/test/00_6network.adoc
@@ -0,0 +1,23 @@
+[cols="1a,1a"]
+|====
+| Variable | Description
+|
+
+**var1** +
+`https://rougail.readthedocs.io/en/latest/variable.html#variables-types[network]` `standard` `mandatory` |
+An network. +
+**Default**: 1.1.1.0
+|
+
+**var2** +
+`https://rougail.readthedocs.io/en/latest/variable.html#variables-types[network]` `standard` `mandatory` |
+An network in CIDR format. +
+**Default**: 1.1.1.0/24
+|
+
+**var3** +
+`https://rougail.readthedocs.io/en/latest/variable.html#variables-types[network_cidr]` `standard` `mandatory` |
+An network in CIDR format with obsolete CIDR type. +
+**Default**: 1.1.1.0/24
+|====
+
diff --git a/tests/results/test/00_6network.json b/tests/results/test/00_6network.json
new file mode 100644
index 000000000..350c92c1d
--- /dev/null
+++ b/tests/results/test/00_6network.json
@@ -0,0 +1,92 @@
+{
+ "var1": {
+ "type": "variable",
+ "default": {
+ "name": "Default",
+ "values": "1.1.1.0"
+ },
+ "properties": [
+ {
+ "type": "type",
+ "name": "network"
+ },
+ {
+ "type": "mode",
+ "name": "standard"
+ },
+ {
+ "type": "property",
+ "name": "mandatory"
+ }
+ ],
+ "paths": [
+ "var1"
+ ],
+ "names": [
+ "var1"
+ ],
+ "descriptions": [
+ "An network."
+ ]
+ },
+ "var2": {
+ "type": "variable",
+ "default": {
+ "name": "Default",
+ "values": "1.1.1.0/24"
+ },
+ "properties": [
+ {
+ "type": "type",
+ "name": "network"
+ },
+ {
+ "type": "mode",
+ "name": "standard"
+ },
+ {
+ "type": "property",
+ "name": "mandatory"
+ }
+ ],
+ "paths": [
+ "var2"
+ ],
+ "names": [
+ "var2"
+ ],
+ "descriptions": [
+ "An network in CIDR format."
+ ]
+ },
+ "var3": {
+ "type": "variable",
+ "default": {
+ "name": "Default",
+ "values": "1.1.1.0/24"
+ },
+ "properties": [
+ {
+ "type": "type",
+ "name": "network_cidr"
+ },
+ {
+ "type": "mode",
+ "name": "standard"
+ },
+ {
+ "type": "property",
+ "name": "mandatory"
+ }
+ ],
+ "paths": [
+ "var3"
+ ],
+ "names": [
+ "var3"
+ ],
+ "descriptions": [
+ "An network in CIDR format with obsolete CIDR type."
+ ]
+ }
+}
\ No newline at end of file
diff --git a/tests/results/test/00_6network.md b/tests/results/test/00_6network.md
new file mode 100644
index 000000000..bb0e0db10
--- /dev/null
+++ b/tests/results/test/00_6network.md
@@ -0,0 +1,6 @@
+| Variable | Description |
+|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| **var1**
[`network`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` | An network.
**Default**: 1.1.1.0 |
+| **var2**
[`network`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` | An network in CIDR format.
**Default**: 1.1.1.0/24 |
+| **var3**
[`network_cidr`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` | An network in CIDR format with obsolete CIDR type.
**Default**: 1.1.1.0/24 |
+
diff --git a/tests/results/test/00_6network.sh b/tests/results/test/00_6network.sh
new file mode 100644
index 000000000..b668dee2c
--- /dev/null
+++ b/tests/results/test/00_6network.sh
@@ -0,0 +1,13 @@
+┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
+┃[1m [0m[1mVariable [0m[1m [0m┃[1m [0m[1mDescription [0m[1m [0m┃
+┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
+│ [1mvar1[0m │ An network. │
+│ [1;7m network [0m [1;7m standard [0m [1;7m mandatory [0m │ [1mDefault[0m: 1.1.1.0 │
+├───────────────────────────────────────┼──────────────────────────────────────┤
+│ [1mvar2[0m │ An network in CIDR format. │
+│ [1;7m network [0m [1;7m standard [0m [1;7m mandatory [0m │ [1mDefault[0m: 1.1.1.0/24 │
+├───────────────────────────────────────┼──────────────────────────────────────┤
+│ [1mvar3[0m │ An network in CIDR format with │
+│ [1;7m network_cidr [0m [1;7m standard [0m [1;7m mandatory [0m │ obsolete CIDR type. │
+│ │ [1mDefault[0m: 1.1.1.0/24 │
+└───────────────────────────────────────┴──────────────────────────────────────┘
diff --git a/tests/results/test/00_9default_calculation_multi_optional_default.adoc b/tests/results/test/00_9default_calculation_multi_optional_default.adoc
new file mode 100644
index 000000000..aef724200
--- /dev/null
+++ b/tests/results/test/00_9default_calculation_multi_optional_default.adoc
@@ -0,0 +1,17 @@
+[cols="1a,1a"]
+|====
+| Variable | Description
+|
+
+**my_variable** +
+`https://rougail.readthedocs.io/en/latest/variable.html#variables-types[string]` `standard` `mandatory` |
+My_variable. +
+**Default**: val1
+|
+
+**my_calculated_variable** +
+`https://rougail.readthedocs.io/en/latest/variable.html#variables-types[string]` `standard` `mandatory` `unique` `multiple` |
+My_calculated_variable. +
+**Default**: the value of the variable "my_variable".
+|====
+
diff --git a/tests/results/test/00_9default_calculation_multi_optional_default.json b/tests/results/test/00_9default_calculation_multi_optional_default.json
new file mode 100644
index 000000000..4161896b1
--- /dev/null
+++ b/tests/results/test/00_9default_calculation_multi_optional_default.json
@@ -0,0 +1,66 @@
+{
+ "my_variable": {
+ "type": "variable",
+ "default": {
+ "name": "Default",
+ "values": "val1"
+ },
+ "properties": [
+ {
+ "type": "type",
+ "name": "string"
+ },
+ {
+ "type": "mode",
+ "name": "standard"
+ },
+ {
+ "type": "property",
+ "name": "mandatory"
+ }
+ ],
+ "paths": [
+ "my_variable"
+ ],
+ "names": [
+ "my_variable"
+ ]
+ },
+ "my_calculated_variable": {
+ "type": "variable",
+ "default": {
+ "name": "Default",
+ "values": [
+ "the value of the variable \"my_variable\"."
+ ]
+ },
+ "properties": [
+ {
+ "type": "type",
+ "name": "string"
+ },
+ {
+ "type": "mode",
+ "name": "standard"
+ },
+ {
+ "type": "property",
+ "name": "mandatory"
+ },
+ {
+ "type": "property",
+ "name": "unique"
+ },
+ {
+ "type": "multiple",
+ "name": "multiple"
+ }
+ ],
+ "paths": [
+ "my_calculated_variable"
+ ],
+ "names": [
+ "my_calculated_variable"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/tests/results/test/00_9default_calculation_multi_optional_default.md b/tests/results/test/00_9default_calculation_multi_optional_default.md
new file mode 100644
index 000000000..a87edfa84
--- /dev/null
+++ b/tests/results/test/00_9default_calculation_multi_optional_default.md
@@ -0,0 +1,5 @@
+| Variable | Description |
+|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| **my_variable**
[`string`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` | My_variable.
**Default**: val1 |
+| **my_calculated_variable**
[`string`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` `unique` `multiple` | My_calculated_variable.
**Default**: the value of the variable "my_variable". |
+
diff --git a/tests/results/test/00_9default_calculation_multi_optional_default.sh b/tests/results/test/00_9default_calculation_multi_optional_default.sh
new file mode 100644
index 000000000..c63c97018
--- /dev/null
+++ b/tests/results/test/00_9default_calculation_multi_optional_default.sh
@@ -0,0 +1,10 @@
+┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
+┃[1m [0m[1mVariable [0m[1m [0m┃[1m [0m[1mDescription [0m[1m [0m┃
+┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
+│ [1mmy_variable[0m │ My_variable. │
+│ [1;7m string [0m [1;7m standard [0m [1;7m mandatory [0m │ [1mDefault[0m: val1 │
+├───────────────────────────────────────┼──────────────────────────────────────┤
+│ [1mmy_calculated_variable[0m │ My_calculated_variable. │
+│ [1;7m string [0m [1;7m standard [0m [1;7m mandatory [0m [1;7m [0m │ [1mDefault[0m: the value of the variable │
+│ [1;7munique [0m [1;7m multiple [0m │ "my_variable". │
+└───────────────────────────────────────┴──────────────────────────────────────┘
diff --git a/tests/results/test/01_9choice_variable_optional.adoc b/tests/results/test/01_9choice_variable_optional.adoc
new file mode 100644
index 000000000..6d15b517b
--- /dev/null
+++ b/tests/results/test/01_9choice_variable_optional.adoc
@@ -0,0 +1,15 @@
+[cols="1a,1a"]
+|====
+| Variable | Description
+|
+
+**variable** +
+`https://rougail.readthedocs.io/en/latest/variable.html#variables-types[choice]` `standard` `mandatory` |
+A variable. +
+**Choices**:
+
+* a
+* b
+* c **← (default)**
+|====
+
diff --git a/tests/results/test/01_9choice_variable_optional.json b/tests/results/test/01_9choice_variable_optional.json
new file mode 100644
index 000000000..0f5988df7
--- /dev/null
+++ b/tests/results/test/01_9choice_variable_optional.json
@@ -0,0 +1,41 @@
+{
+ "variable": {
+ "type": "variable",
+ "default": {
+ "name": "Default",
+ "values": "c"
+ },
+ "properties": [
+ {
+ "type": "type",
+ "name": "choice"
+ },
+ {
+ "type": "mode",
+ "name": "standard"
+ },
+ {
+ "type": "property",
+ "name": "mandatory"
+ }
+ ],
+ "default_is_already_set": true,
+ "choices": {
+ "name": "Choices",
+ "values": [
+ "a",
+ "b",
+ "c ← (default)"
+ ]
+ },
+ "paths": [
+ "variable"
+ ],
+ "names": [
+ "variable"
+ ],
+ "descriptions": [
+ "A variable."
+ ]
+ }
+}
\ No newline at end of file
diff --git a/tests/results/test/01_9choice_variable_optional.md b/tests/results/test/01_9choice_variable_optional.md
new file mode 100644
index 000000000..f90f6fda4
--- /dev/null
+++ b/tests/results/test/01_9choice_variable_optional.md
@@ -0,0 +1,4 @@
+| Variable | Description |
+|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| **variable**
[`choice`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` | A variable.
**Choices**:
- a
- b
- c **← (default)** |
+
diff --git a/tests/results/test/01_9choice_variable_optional.sh b/tests/results/test/01_9choice_variable_optional.sh
new file mode 100644
index 000000000..9239e8eea
--- /dev/null
+++ b/tests/results/test/01_9choice_variable_optional.sh
@@ -0,0 +1,9 @@
+┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
+┃[1m [0m[1mVariable [0m[1m [0m┃[1m [0m[1mDescription [0m[1m [0m┃
+┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
+│ [1mvariable[0m │ A variable. │
+│ [1;7m choice [0m [1;7m standard [0m [1;7m mandatory [0m │ [1mChoices[0m: │
+│ │ - a │
+│ │ - b │
+│ │ - c [1m← (default)[0m │
+└───────────────────────────────────────┴──────────────────────────────────────┘
diff --git a/tests/results/test/04_5disabled_calculation_optional_default.adoc b/tests/results/test/04_5disabled_calculation_optional_default.adoc
new file mode 100644
index 000000000..85815825f
--- /dev/null
+++ b/tests/results/test/04_5disabled_calculation_optional_default.adoc
@@ -0,0 +1,23 @@
+[cols="1a,1a"]
+|====
+| Variable | Description
+|
+
+**condition** +
+`https://rougail.readthedocs.io/en/latest/variable.html#variables-types[boolean]` `standard` `mandatory` |
+A condition. +
+**Default**: false
+|
+
+**var3** +
+`https://rougail.readthedocs.io/en/latest/variable.html#variables-types[string]` `standard` `__hidden__` |
+A second variable. +
+**Hidden**: when the variable "condition" has the value "true".
+|
+
+**var4** +
+`https://rougail.readthedocs.io/en/latest/variable.html#variables-types[string]` `standard` `__hidden__` |
+A forth variable. +
+**Hidden**: when the variable "condition" has the value "true".
+|====
+
diff --git a/tests/results/test/04_5disabled_calculation_optional_default.json b/tests/results/test/04_5disabled_calculation_optional_default.json
new file mode 100644
index 000000000..5b72683d2
--- /dev/null
+++ b/tests/results/test/04_5disabled_calculation_optional_default.json
@@ -0,0 +1,86 @@
+{
+ "condition": {
+ "type": "variable",
+ "default": {
+ "name": "Default",
+ "values": false
+ },
+ "properties": [
+ {
+ "type": "type",
+ "name": "boolean"
+ },
+ {
+ "type": "mode",
+ "name": "standard"
+ },
+ {
+ "type": "property",
+ "name": "mandatory"
+ }
+ ],
+ "paths": [
+ "condition"
+ ],
+ "names": [
+ "condition"
+ ],
+ "descriptions": [
+ "A condition."
+ ]
+ },
+ "var3": {
+ "type": "variable",
+ "properties": [
+ {
+ "type": "type",
+ "name": "string"
+ },
+ {
+ "type": "mode",
+ "name": "standard"
+ },
+ {
+ "type": "property",
+ "name": "hidden",
+ "annotation": "when the variable \"condition\" has the value \"true\"."
+ }
+ ],
+ "paths": [
+ "var3"
+ ],
+ "names": [
+ "var3"
+ ],
+ "descriptions": [
+ "A second variable."
+ ]
+ },
+ "var4": {
+ "type": "variable",
+ "properties": [
+ {
+ "type": "type",
+ "name": "string"
+ },
+ {
+ "type": "mode",
+ "name": "standard"
+ },
+ {
+ "type": "property",
+ "name": "hidden",
+ "annotation": "when the variable \"condition\" has the value \"true\"."
+ }
+ ],
+ "paths": [
+ "var4"
+ ],
+ "names": [
+ "var4"
+ ],
+ "descriptions": [
+ "A forth variable."
+ ]
+ }
+}
\ No newline at end of file
diff --git a/tests/results/test/04_5disabled_calculation_optional_default.md b/tests/results/test/04_5disabled_calculation_optional_default.md
new file mode 100644
index 000000000..a23e5f5bb
--- /dev/null
+++ b/tests/results/test/04_5disabled_calculation_optional_default.md
@@ -0,0 +1,6 @@
+| Variable | Description |
+|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| **condition**
[`boolean`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` | A condition.
**Default**: false |
+| **var3**
[`string`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` *`hidden`* | A second variable.
**Hidden**: when the variable "condition" has the value "true". |
+| **var4**
[`string`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` *`hidden`* | A forth variable.
**Hidden**: when the variable "condition" has the value "true". |
+
diff --git a/tests/results/test/04_5disabled_calculation_optional_default.sh b/tests/results/test/04_5disabled_calculation_optional_default.sh
new file mode 100644
index 000000000..4d0744198
--- /dev/null
+++ b/tests/results/test/04_5disabled_calculation_optional_default.sh
@@ -0,0 +1,14 @@
+┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
+┃[1m [0m[1mVariable [0m[1m [0m┃[1m [0m[1mDescription [0m[1m [0m┃
+┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
+│ [1mcondition[0m │ A condition. │
+│ [1;7m boolean [0m [1;7m standard [0m [1;7m mandatory [0m │ [1mDefault[0m: false │
+├───────────────────────────────────────┼──────────────────────────────────────┤
+│ [1mvar3[0m │ A second variable. │
+│ [1;7m string [0m [1;7m standard [0m [1;3;7m hidden [0m │ [1mHidden[0m: when the variable │
+│ │ "condition" has the value "true". │
+├───────────────────────────────────────┼──────────────────────────────────────┤
+│ [1mvar4[0m │ A forth variable. │
+│ [1;7m string [0m [1;7m standard [0m [1;3;7m hidden [0m │ [1mHidden[0m: when the variable │
+│ │ "condition" has the value "true". │
+└───────────────────────────────────────┴──────────────────────────────────────┘
diff --git a/tests/results/test/40_2leadership_calculation_index.adoc b/tests/results/test/40_2leadership_calculation_index.adoc
new file mode 100644
index 000000000..d1bd1aab9
--- /dev/null
+++ b/tests/results/test/40_2leadership_calculation_index.adoc
@@ -0,0 +1,27 @@
+== a leadership
+
+`standard`
+
+This family contains lists of variable blocks.
+
+[cols="1a,1a"]
+|====
+| Variable | Description
+|
+
+**leader.leader** +
+`https://rougail.readthedocs.io/en/latest/variable.html#variables-types[string]` `standard` `mandatory` `unique` `multiple` |
+A leader. +
+**Default**:
+
+* a
+* b
+* c
+|
+
+**leader.follower1** +
+`https://rougail.readthedocs.io/en/latest/variable.html#variables-types[integer]` `standard` `mandatory` |
+A follower. +
+**Default**: the value of the index.
+|====
+
diff --git a/tests/results/test/40_2leadership_calculation_index.json b/tests/results/test/40_2leadership_calculation_index.json
new file mode 100644
index 000000000..b3a6b2ebd
--- /dev/null
+++ b/tests/results/test/40_2leadership_calculation_index.json
@@ -0,0 +1,97 @@
+{
+ "leader": {
+ "type": "leadership",
+ "informations": {
+ "paths": [
+ "leader"
+ ],
+ "names": [
+ "leader"
+ ],
+ "description": "a leadership",
+ "properties": [
+ {
+ "type": "mode",
+ "name": "standard"
+ }
+ ],
+ "help": [
+ "This family contains lists of variable blocks."
+ ]
+ },
+ "children": {
+ "leader.leader": {
+ "type": "variable",
+ "default": {
+ "name": "Default",
+ "values": [
+ "a",
+ "b",
+ "c"
+ ]
+ },
+ "properties": [
+ {
+ "type": "type",
+ "name": "string"
+ },
+ {
+ "type": "mode",
+ "name": "standard"
+ },
+ {
+ "type": "property",
+ "name": "mandatory"
+ },
+ {
+ "type": "property",
+ "name": "unique"
+ },
+ {
+ "type": "multiple",
+ "name": "multiple"
+ }
+ ],
+ "paths": [
+ "leader.leader"
+ ],
+ "names": [
+ "leader"
+ ],
+ "descriptions": [
+ "A leader."
+ ]
+ },
+ "leader.follower1": {
+ "type": "variable",
+ "default": {
+ "name": "Default",
+ "values": "the value of the index."
+ },
+ "properties": [
+ {
+ "type": "type",
+ "name": "integer"
+ },
+ {
+ "type": "mode",
+ "name": "standard"
+ },
+ {
+ "type": "property",
+ "name": "mandatory"
+ }
+ ],
+ "paths": [
+ "leader.follower1"
+ ],
+ "names": [
+ "follower1"
+ ],
+ "descriptions": [
+ "A follower."
+ ]
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/tests/results/test/40_2leadership_calculation_index.md b/tests/results/test/40_2leadership_calculation_index.md
new file mode 100644
index 000000000..6e7a17097
--- /dev/null
+++ b/tests/results/test/40_2leadership_calculation_index.md
@@ -0,0 +1,11 @@
+# a leadership
+
+`standard`
+
+This family contains lists of variable blocks.
+
+| Variable | Description |
+|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| **leader.leader**
[`string`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` `unique` `multiple` | A leader.
**Default**:
- a
- b
- c |
+| **leader.follower1**
[`integer`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` | A follower.
**Default**: the value of the index. |
+
diff --git a/tests/results/test/40_2leadership_calculation_index.sh b/tests/results/test/40_2leadership_calculation_index.sh
new file mode 100644
index 000000000..840158a78
--- /dev/null
+++ b/tests/results/test/40_2leadership_calculation_index.sh
@@ -0,0 +1,23 @@
+
+
+[1;4;96ma leadership[0m
+
+
+[1;7m standard [0m
+
+
+This family contains lists of variable blocks.
+
+
+┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
+┃[1m [0m[1mVariable [0m[1m [0m┃[1m [0m[1mDescription [0m[1m [0m┃
+┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
+│ [1mleader.leader[0m │ A leader. │
+│ [1;7m string [0m [1;7m standard [0m [1;7m mandatory [0m [1;7m [0m │ [1mDefault[0m: │
+│ [1;7munique [0m [1;7m multiple [0m │ - a │
+│ │ - b │
+│ │ - c │
+├───────────────────────────────────────┼──────────────────────────────────────┤
+│ [1mleader.follower1[0m │ A follower. │
+│ [1;7m integer [0m [1;7m standard [0m [1;7m mandatory [0m │ [1mDefault[0m: the value of the index. │
+└───────────────────────────────────────┴──────────────────────────────────────┘
diff --git a/tests/results/test/40_2leadership_calculation_index_2.adoc b/tests/results/test/40_2leadership_calculation_index_2.adoc
new file mode 100644
index 000000000..d1bd1aab9
--- /dev/null
+++ b/tests/results/test/40_2leadership_calculation_index_2.adoc
@@ -0,0 +1,27 @@
+== a leadership
+
+`standard`
+
+This family contains lists of variable blocks.
+
+[cols="1a,1a"]
+|====
+| Variable | Description
+|
+
+**leader.leader** +
+`https://rougail.readthedocs.io/en/latest/variable.html#variables-types[string]` `standard` `mandatory` `unique` `multiple` |
+A leader. +
+**Default**:
+
+* a
+* b
+* c
+|
+
+**leader.follower1** +
+`https://rougail.readthedocs.io/en/latest/variable.html#variables-types[integer]` `standard` `mandatory` |
+A follower. +
+**Default**: the value of the index.
+|====
+
diff --git a/tests/results/test/40_2leadership_calculation_index_2.json b/tests/results/test/40_2leadership_calculation_index_2.json
new file mode 100644
index 000000000..b3a6b2ebd
--- /dev/null
+++ b/tests/results/test/40_2leadership_calculation_index_2.json
@@ -0,0 +1,97 @@
+{
+ "leader": {
+ "type": "leadership",
+ "informations": {
+ "paths": [
+ "leader"
+ ],
+ "names": [
+ "leader"
+ ],
+ "description": "a leadership",
+ "properties": [
+ {
+ "type": "mode",
+ "name": "standard"
+ }
+ ],
+ "help": [
+ "This family contains lists of variable blocks."
+ ]
+ },
+ "children": {
+ "leader.leader": {
+ "type": "variable",
+ "default": {
+ "name": "Default",
+ "values": [
+ "a",
+ "b",
+ "c"
+ ]
+ },
+ "properties": [
+ {
+ "type": "type",
+ "name": "string"
+ },
+ {
+ "type": "mode",
+ "name": "standard"
+ },
+ {
+ "type": "property",
+ "name": "mandatory"
+ },
+ {
+ "type": "property",
+ "name": "unique"
+ },
+ {
+ "type": "multiple",
+ "name": "multiple"
+ }
+ ],
+ "paths": [
+ "leader.leader"
+ ],
+ "names": [
+ "leader"
+ ],
+ "descriptions": [
+ "A leader."
+ ]
+ },
+ "leader.follower1": {
+ "type": "variable",
+ "default": {
+ "name": "Default",
+ "values": "the value of the index."
+ },
+ "properties": [
+ {
+ "type": "type",
+ "name": "integer"
+ },
+ {
+ "type": "mode",
+ "name": "standard"
+ },
+ {
+ "type": "property",
+ "name": "mandatory"
+ }
+ ],
+ "paths": [
+ "leader.follower1"
+ ],
+ "names": [
+ "follower1"
+ ],
+ "descriptions": [
+ "A follower."
+ ]
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/tests/results/test/40_2leadership_calculation_index_2.md b/tests/results/test/40_2leadership_calculation_index_2.md
new file mode 100644
index 000000000..6e7a17097
--- /dev/null
+++ b/tests/results/test/40_2leadership_calculation_index_2.md
@@ -0,0 +1,11 @@
+# a leadership
+
+`standard`
+
+This family contains lists of variable blocks.
+
+| Variable | Description |
+|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| **leader.leader**
[`string`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` `unique` `multiple` | A leader.
**Default**:
- a
- b
- c |
+| **leader.follower1**
[`integer`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` | A follower.
**Default**: the value of the index. |
+
diff --git a/tests/results/test/40_2leadership_calculation_index_2.sh b/tests/results/test/40_2leadership_calculation_index_2.sh
new file mode 100644
index 000000000..840158a78
--- /dev/null
+++ b/tests/results/test/40_2leadership_calculation_index_2.sh
@@ -0,0 +1,23 @@
+
+
+[1;4;96ma leadership[0m
+
+
+[1;7m standard [0m
+
+
+This family contains lists of variable blocks.
+
+
+┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
+┃[1m [0m[1mVariable [0m[1m [0m┃[1m [0m[1mDescription [0m[1m [0m┃
+┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
+│ [1mleader.leader[0m │ A leader. │
+│ [1;7m string [0m [1;7m standard [0m [1;7m mandatory [0m [1;7m [0m │ [1mDefault[0m: │
+│ [1;7munique [0m [1;7m multiple [0m │ - a │
+│ │ - b │
+│ │ - c │
+├───────────────────────────────────────┼──────────────────────────────────────┤
+│ [1mleader.follower1[0m │ A follower. │
+│ [1;7m integer [0m [1;7m standard [0m [1;7m mandatory [0m │ [1mDefault[0m: the value of the index. │
+└───────────────────────────────────────┴──────────────────────────────────────┘
diff --git a/tests/results/test/60_0family_dynamic_variable_optional.adoc b/tests/results/test/60_0family_dynamic_variable_optional.adoc
new file mode 100644
index 000000000..0ee194c11
--- /dev/null
+++ b/tests/results/test/60_0family_dynamic_variable_optional.adoc
@@ -0,0 +1,23 @@
+== a dynamic family
+
+`standard`
+
+This family builds families dynamically.
+
+**Identifiers**:
+
+* a
+* b
+
+[cols="1a,1a"]
+|====
+| Variable | Description
+|
+
+**dyn__a__.var** +
+**dyn__b__.var** +
+`https://rougail.readthedocs.io/en/latest/variable.html#variables-types[string]` `standard` `mandatory` |
+A variable inside dynamic family. +
+**Default**: val
+|====
+
diff --git a/tests/results/test/60_0family_dynamic_variable_optional.json b/tests/results/test/60_0family_dynamic_variable_optional.json
new file mode 100644
index 000000000..372c122cc
--- /dev/null
+++ b/tests/results/test/60_0family_dynamic_variable_optional.json
@@ -0,0 +1,63 @@
+{
+ "dyn{{ identifier }}": {
+ "type": "dynamic",
+ "informations": {
+ "paths": [
+ "dyna",
+ "dynb"
+ ],
+ "names": [
+ "dyna",
+ "dynb"
+ ],
+ "description": "a dynamic family",
+ "properties": [
+ {
+ "type": "mode",
+ "name": "standard"
+ }
+ ],
+ "identifiers": [
+ "a",
+ "b"
+ ],
+ "help": [
+ "This family builds families dynamically."
+ ]
+ },
+ "children": {
+ "dyn{{ identifier }}.var": {
+ "paths": [
+ "dyna.var",
+ "dynb.var"
+ ],
+ "names": [
+ "var",
+ "var"
+ ],
+ "type": "variable",
+ "default": {
+ "name": "Default",
+ "values": "val"
+ },
+ "properties": [
+ {
+ "type": "type",
+ "name": "string"
+ },
+ {
+ "type": "mode",
+ "name": "standard"
+ },
+ {
+ "type": "property",
+ "name": "mandatory"
+ }
+ ],
+ "descriptions": [
+ "A variable inside dynamic family."
+ ]
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/tests/results/test/60_0family_dynamic_variable_optional.md b/tests/results/test/60_0family_dynamic_variable_optional.md
new file mode 100644
index 000000000..7679c1bba
--- /dev/null
+++ b/tests/results/test/60_0family_dynamic_variable_optional.md
@@ -0,0 +1,12 @@
+# a dynamic family
+
+`standard`
+
+This family builds families dynamically.
+
+**Identifiers**:
- a
- b
+
+| Variable | Description |
+|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| **dyn*a*.var**
**dyn*b*.var**
[`string`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` | A variable inside dynamic family.
**Default**: val |
+
diff --git a/tests/results/test/60_0family_dynamic_variable_optional.sh b/tests/results/test/60_0family_dynamic_variable_optional.sh
new file mode 100644
index 000000000..a28cfb778
--- /dev/null
+++ b/tests/results/test/60_0family_dynamic_variable_optional.sh
@@ -0,0 +1,23 @@
+
+
+[1;4;96ma dynamic family[0m
+
+
+[1;7m standard [0m
+
+
+This family builds families dynamically.
+
+
+[1mIdentifiers[0m:
+- a
+- b
+
+
+┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
+┃[1m [0m[1mVariable [0m[1m [0m┃[1m [0m[1mDescription [0m[1m [0m┃
+┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
+│ [1mdyn[0m[1;3ma[0m[1m.var[0m │ A variable inside dynamic family. │
+│ [1mdyn[0m[1;3mb[0m[1m.var[0m │ [1mDefault[0m: val │
+│ [1;7m string [0m [1;7m standard [0m [1;7m mandatory [0m │ │
+└───────────────────────────────────────┴──────────────────────────────────────┘
diff --git a/tests/results/test/warnings_00_2default_calculated_variable b/tests/results/test/warnings_00_2default_calculated_variable
new file mode 100644
index 000000000..0637a088a
--- /dev/null
+++ b/tests/results/test/warnings_00_2default_calculated_variable
@@ -0,0 +1 @@
+[]
\ No newline at end of file
diff --git a/tests/results/test/warnings_00_6ip b/tests/results/test/warnings_00_6ip
new file mode 100644
index 000000000..f440cd841
--- /dev/null
+++ b/tests/results/test/warnings_00_6ip
@@ -0,0 +1 @@
+["the variable \"var3\" has a depreciated type \"cidr\", please use type \"ip\" with attribute cidr=True instead in \"../../rougail-tests/structures/00_6ip/rougail/00-base.yml\""]
\ No newline at end of file
diff --git a/tests/results/test/warnings_00_6network b/tests/results/test/warnings_00_6network
new file mode 100644
index 000000000..afe0607c3
--- /dev/null
+++ b/tests/results/test/warnings_00_6network
@@ -0,0 +1 @@
+["the variable \"var3\" has a depreciated type \"network_cidr\", please use type \"network\" with attribute cidr=True instead in \"../../rougail-tests/structures/00_6network/rougail/00-base.yml\""]
\ No newline at end of file
diff --git a/tests/results/test/warnings_00_9default_calculation_multi_optional_default b/tests/results/test/warnings_00_9default_calculation_multi_optional_default
new file mode 100644
index 000000000..8ec9fcb00
--- /dev/null
+++ b/tests/results/test/warnings_00_9default_calculation_multi_optional_default
@@ -0,0 +1 @@
+["No attribute \"description\" for \"my_variable\" in \"../../rougail-tests/structures/00_9default_calculation_multi_optional_default/rougail/00-base.yml\"", "No attribute \"description\" for \"my_calculated_variable\" in \"../../rougail-tests/structures/00_9default_calculation_multi_optional_default/rougail/00-base.yml\""]
\ No newline at end of file
diff --git a/tests/results/test/warnings_01_9choice_variable_optional b/tests/results/test/warnings_01_9choice_variable_optional
new file mode 100644
index 000000000..0637a088a
--- /dev/null
+++ b/tests/results/test/warnings_01_9choice_variable_optional
@@ -0,0 +1 @@
+[]
\ No newline at end of file
diff --git a/tests/results/test/warnings_04_5disabled_calculation_optional_default b/tests/results/test/warnings_04_5disabled_calculation_optional_default
new file mode 100644
index 000000000..0637a088a
--- /dev/null
+++ b/tests/results/test/warnings_04_5disabled_calculation_optional_default
@@ -0,0 +1 @@
+[]
\ No newline at end of file
diff --git a/tests/results/test/warnings_40_2leadership_calculation_index b/tests/results/test/warnings_40_2leadership_calculation_index
new file mode 100644
index 000000000..0637a088a
--- /dev/null
+++ b/tests/results/test/warnings_40_2leadership_calculation_index
@@ -0,0 +1 @@
+[]
\ No newline at end of file
diff --git a/tests/results/test/warnings_40_2leadership_calculation_index_2 b/tests/results/test/warnings_40_2leadership_calculation_index_2
new file mode 100644
index 000000000..0637a088a
--- /dev/null
+++ b/tests/results/test/warnings_40_2leadership_calculation_index_2
@@ -0,0 +1 @@
+[]
\ No newline at end of file
diff --git a/tests/results/test/warnings_60_0family_dynamic_variable_optional b/tests/results/test/warnings_60_0family_dynamic_variable_optional
new file mode 100644
index 000000000..0637a088a
--- /dev/null
+++ b/tests/results/test/warnings_60_0family_dynamic_variable_optional
@@ -0,0 +1 @@
+[]
\ No newline at end of file
diff --git a/tests/results/test_examples/00_2default_calculated_variable.md b/tests/results/test_examples/00_2default_calculated_variable.md
new file mode 100644
index 000000000..d4d2f9bbe
--- /dev/null
+++ b/tests/results/test_examples/00_2default_calculated_variable.md
@@ -0,0 +1,16 @@
+# Example with mandatory variables not filled in
+
+```yaml
+---
+var1:
+ - example.net
+```
+# Example with all variables modifiable
+
+```yaml
+---
+var1:
+ - example.net
+var2:
+ - example.net
+```
diff --git a/tests/results/test_examples/00_6ip.md b/tests/results/test_examples/00_6ip.md
new file mode 100644
index 000000000..aae0ed6fa
--- /dev/null
+++ b/tests/results/test_examples/00_6ip.md
@@ -0,0 +1,8 @@
+# Example with all variables modifiable
+
+```yaml
+---
+var1: 1.1.1.1
+var2: 192.168.0.128/25
+var3: 1.1.1.1/24
+```
diff --git a/tests/results/test_examples/00_6network.md b/tests/results/test_examples/00_6network.md
new file mode 100644
index 000000000..bff5164be
--- /dev/null
+++ b/tests/results/test_examples/00_6network.md
@@ -0,0 +1,8 @@
+# Example with all variables modifiable
+
+```yaml
+---
+var1: 1.1.1.0
+var2: 1.1.1.0/24
+var3: 1.1.1.0/24
+```
diff --git a/tests/results/test_examples/00_9default_calculation_multi_optional_default.md b/tests/results/test_examples/00_9default_calculation_multi_optional_default.md
new file mode 100644
index 000000000..a5553d34d
--- /dev/null
+++ b/tests/results/test_examples/00_9default_calculation_multi_optional_default.md
@@ -0,0 +1,9 @@
+# Example with all variables modifiable
+
+```yaml
+---
+my_variable: val1
+my_calculated_variable:
+ - val1
+ - value
+```
diff --git a/tests/results/test_examples/01_9choice_variable_optional.md b/tests/results/test_examples/01_9choice_variable_optional.md
new file mode 100644
index 000000000..65a87e463
--- /dev/null
+++ b/tests/results/test_examples/01_9choice_variable_optional.md
@@ -0,0 +1,6 @@
+# Example with all variables modifiable
+
+```yaml
+---
+variable: c
+```
diff --git a/tests/results/test_examples/04_5disabled_calculation_optional_default.md b/tests/results/test_examples/04_5disabled_calculation_optional_default.md
new file mode 100644
index 000000000..939b838bf
--- /dev/null
+++ b/tests/results/test_examples/04_5disabled_calculation_optional_default.md
@@ -0,0 +1,8 @@
+# Example with all variables modifiable
+
+```yaml
+---
+condition: false
+var3: example
+var4: example
+```
diff --git a/tests/results/test_examples/40_2leadership_calculation_index.md b/tests/results/test_examples/40_2leadership_calculation_index.md
new file mode 100644
index 000000000..1e9adde85
--- /dev/null
+++ b/tests/results/test_examples/40_2leadership_calculation_index.md
@@ -0,0 +1,12 @@
+# Example with all variables modifiable
+
+```yaml
+---
+leader:
+ - leader: a
+ follower1: 0
+ - leader: b
+ follower1: 1
+ - leader: c
+ follower1: 2
+```
diff --git a/tests/results/test_examples/40_2leadership_calculation_index_2.md b/tests/results/test_examples/40_2leadership_calculation_index_2.md
new file mode 100644
index 000000000..1e9adde85
--- /dev/null
+++ b/tests/results/test_examples/40_2leadership_calculation_index_2.md
@@ -0,0 +1,12 @@
+# Example with all variables modifiable
+
+```yaml
+---
+leader:
+ - leader: a
+ follower1: 0
+ - leader: b
+ follower1: 1
+ - leader: c
+ follower1: 2
+```
diff --git a/tests/results/test_examples/60_0family_dynamic_variable_optional.md b/tests/results/test_examples/60_0family_dynamic_variable_optional.md
new file mode 100644
index 000000000..2beeb0e3e
--- /dev/null
+++ b/tests/results/test_examples/60_0family_dynamic_variable_optional.md
@@ -0,0 +1,9 @@
+# Example with all variables modifiable
+
+```yaml
+---
+dyna:
+ var: val
+dynb:
+ var: val
+```
diff --git a/tests/results/test_examples/warnings_00_2default_calculated_variable b/tests/results/test_examples/warnings_00_2default_calculated_variable
new file mode 100644
index 000000000..0637a088a
--- /dev/null
+++ b/tests/results/test_examples/warnings_00_2default_calculated_variable
@@ -0,0 +1 @@
+[]
\ No newline at end of file
diff --git a/tests/results/test_examples/warnings_00_6ip b/tests/results/test_examples/warnings_00_6ip
new file mode 100644
index 000000000..f440cd841
--- /dev/null
+++ b/tests/results/test_examples/warnings_00_6ip
@@ -0,0 +1 @@
+["the variable \"var3\" has a depreciated type \"cidr\", please use type \"ip\" with attribute cidr=True instead in \"../../rougail-tests/structures/00_6ip/rougail/00-base.yml\""]
\ No newline at end of file
diff --git a/tests/results/test_examples/warnings_00_6network b/tests/results/test_examples/warnings_00_6network
new file mode 100644
index 000000000..afe0607c3
--- /dev/null
+++ b/tests/results/test_examples/warnings_00_6network
@@ -0,0 +1 @@
+["the variable \"var3\" has a depreciated type \"network_cidr\", please use type \"network\" with attribute cidr=True instead in \"../../rougail-tests/structures/00_6network/rougail/00-base.yml\""]
\ No newline at end of file
diff --git a/tests/results/test_examples/warnings_00_9default_calculation_multi_optional_default b/tests/results/test_examples/warnings_00_9default_calculation_multi_optional_default
new file mode 100644
index 000000000..8ec9fcb00
--- /dev/null
+++ b/tests/results/test_examples/warnings_00_9default_calculation_multi_optional_default
@@ -0,0 +1 @@
+["No attribute \"description\" for \"my_variable\" in \"../../rougail-tests/structures/00_9default_calculation_multi_optional_default/rougail/00-base.yml\"", "No attribute \"description\" for \"my_calculated_variable\" in \"../../rougail-tests/structures/00_9default_calculation_multi_optional_default/rougail/00-base.yml\""]
\ No newline at end of file
diff --git a/tests/results/test_examples/warnings_01_9choice_variable_optional b/tests/results/test_examples/warnings_01_9choice_variable_optional
new file mode 100644
index 000000000..0637a088a
--- /dev/null
+++ b/tests/results/test_examples/warnings_01_9choice_variable_optional
@@ -0,0 +1 @@
+[]
\ No newline at end of file
diff --git a/tests/results/test_examples/warnings_04_5disabled_calculation_optional_default b/tests/results/test_examples/warnings_04_5disabled_calculation_optional_default
new file mode 100644
index 000000000..0637a088a
--- /dev/null
+++ b/tests/results/test_examples/warnings_04_5disabled_calculation_optional_default
@@ -0,0 +1 @@
+[]
\ No newline at end of file
diff --git a/tests/results/test_examples/warnings_40_2leadership_calculation_index b/tests/results/test_examples/warnings_40_2leadership_calculation_index
new file mode 100644
index 000000000..0637a088a
--- /dev/null
+++ b/tests/results/test_examples/warnings_40_2leadership_calculation_index
@@ -0,0 +1 @@
+[]
\ No newline at end of file
diff --git a/tests/results/test_examples/warnings_40_2leadership_calculation_index_2 b/tests/results/test_examples/warnings_40_2leadership_calculation_index_2
new file mode 100644
index 000000000..0637a088a
--- /dev/null
+++ b/tests/results/test_examples/warnings_40_2leadership_calculation_index_2
@@ -0,0 +1 @@
+[]
\ No newline at end of file
diff --git a/tests/results/test_examples/warnings_60_0family_dynamic_variable_optional b/tests/results/test_examples/warnings_60_0family_dynamic_variable_optional
new file mode 100644
index 000000000..0637a088a
--- /dev/null
+++ b/tests/results/test_examples/warnings_60_0family_dynamic_variable_optional
@@ -0,0 +1 @@
+[]
\ No newline at end of file
diff --git a/tests/results/test_namespace/00_2default_calculated_variable.adoc b/tests/results/test_namespace/00_2default_calculated_variable.adoc
new file mode 100644
index 000000000..8dce5f4a0
--- /dev/null
+++ b/tests/results/test_namespace/00_2default_calculated_variable.adoc
@@ -0,0 +1,19 @@
+== Variables for "Rougail"
+
+[cols="1a,1a"]
+|====
+| Variable | Description
+|
+
+**rougail.var1** +
+`https://rougail.readthedocs.io/en/latest/variable.html#variables-types[domainname]` `basic` `mandatory` `unique` `multiple` |
+A first variable. +
+**Validator**: the domain name can be an IP
+|
+
+**rougail.var2** +
+`https://rougail.readthedocs.io/en/latest/variable.html#variables-types[domainname]` `standard` `mandatory` `unique` `multiple` |
+A second variable. +
+**Default**: the value of the variable "rougail.var1".
+|====
+
diff --git a/tests/results/test_namespace/00_2default_calculated_variable.json b/tests/results/test_namespace/00_2default_calculated_variable.json
new file mode 100644
index 000000000..6d6decb54
--- /dev/null
+++ b/tests/results/test_namespace/00_2default_calculated_variable.json
@@ -0,0 +1,98 @@
+{
+ "rougail": {
+ "type": "namespace",
+ "informations": {
+ "paths": [
+ "rougail"
+ ],
+ "names": [
+ "rougail"
+ ],
+ "description": "Rougail",
+ "properties": [
+ {
+ "type": "mode",
+ "name": "basic"
+ }
+ ]
+ },
+ "children": {
+ "rougail.var1": {
+ "type": "variable",
+ "properties": [
+ {
+ "type": "type",
+ "name": "domainname"
+ },
+ {
+ "type": "mode",
+ "name": "basic"
+ },
+ {
+ "type": "property",
+ "name": "mandatory"
+ },
+ {
+ "type": "property",
+ "name": "unique"
+ },
+ {
+ "type": "multiple",
+ "name": "multiple"
+ }
+ ],
+ "validators": {
+ "name": "Validator",
+ "values": "the domain name can be an IP"
+ },
+ "paths": [
+ "rougail.var1"
+ ],
+ "names": [
+ "var1"
+ ],
+ "descriptions": [
+ "A first variable."
+ ]
+ },
+ "rougail.var2": {
+ "type": "variable",
+ "default": {
+ "name": "Default",
+ "values": "the value of the variable \"rougail.var1\"."
+ },
+ "properties": [
+ {
+ "type": "type",
+ "name": "domainname"
+ },
+ {
+ "type": "mode",
+ "name": "standard"
+ },
+ {
+ "type": "property",
+ "name": "mandatory"
+ },
+ {
+ "type": "property",
+ "name": "unique"
+ },
+ {
+ "type": "multiple",
+ "name": "multiple"
+ }
+ ],
+ "paths": [
+ "rougail.var2"
+ ],
+ "names": [
+ "var2"
+ ],
+ "descriptions": [
+ "A second variable."
+ ]
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/tests/results/test_namespace/00_2default_calculated_variable.md b/tests/results/test_namespace/00_2default_calculated_variable.md
new file mode 100644
index 000000000..81d3f30d3
--- /dev/null
+++ b/tests/results/test_namespace/00_2default_calculated_variable.md
@@ -0,0 +1,7 @@
+# Variables for "Rougail"
+
+| Variable | Description |
+|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| **rougail.var1**
[`domainname`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `basic` `mandatory` `unique` `multiple` | A first variable.
**Validator**: the domain name can be an IP |
+| **rougail.var2**
[`domainname`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` `unique` `multiple` | A second variable.
**Default**: the value of the variable "rougail.var1". |
+
diff --git a/tests/results/test_namespace/00_2default_calculated_variable.sh b/tests/results/test_namespace/00_2default_calculated_variable.sh
new file mode 100644
index 000000000..e081f542c
--- /dev/null
+++ b/tests/results/test_namespace/00_2default_calculated_variable.sh
@@ -0,0 +1,16 @@
+
+
+[1;4;96mVariables for [0m[1;4;96m"Rougail"[0m
+
+
+┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
+┃[1m [0m[1mVariable [0m[1m [0m┃[1m [0m[1mDescription [0m[1m [0m┃
+┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
+│ [1mrougail.var1[0m │ A first variable. │
+│ [1;7m domainname [0m [1;7m basic [0m [1;7m mandatory [0m [1;7m [0m │ [1mValidator[0m: the domain name can be an │
+│ [1;7munique [0m [1;7m multiple [0m │ IP │
+├───────────────────────────────────────┼──────────────────────────────────────┤
+│ [1mrougail.var2[0m │ A second variable. │
+│ [1;7m domainname [0m [1;7m standard [0m [1;7m mandatory [0m [1;7m [0m │ [1mDefault[0m: the value of the variable │
+│ [1;7munique [0m [1;7m multiple [0m │ "rougail.var1". │
+└───────────────────────────────────────┴──────────────────────────────────────┘
diff --git a/tests/results/test_namespace/00_6ip.adoc b/tests/results/test_namespace/00_6ip.adoc
new file mode 100644
index 000000000..9d9a69d96
--- /dev/null
+++ b/tests/results/test_namespace/00_6ip.adoc
@@ -0,0 +1,32 @@
+== Variables for "Rougail"
+
+[cols="1a,1a"]
+|====
+| Variable | Description
+|
+
+**rougail.var1** +
+`https://rougail.readthedocs.io/en/latest/variable.html#variables-types[IP]` `standard` `mandatory` |
+An IP. +
+**Validator**: reserved IP are allowed +
+**Default**: 1.1.1.1
+|
+
+**rougail.var2** +
+`https://rougail.readthedocs.io/en/latest/variable.html#variables-types[IP]` `standard` `mandatory` |
+An IP in CIDR format. +
+**Validators**:
+
+* IP must be in CIDR format
+* reserved IP are allowed
+
+**Default**: 1.1.1.1/24 +
+**Example**: 192.168.0.128/25
+|
+
+**rougail.var3** +
+`https://rougail.readthedocs.io/en/latest/variable.html#variables-types[cidr]` `standard` `mandatory` |
+An IP in CIDR format with obsolete CIDR type. +
+**Default**: 1.1.1.1/24
+|====
+
diff --git a/tests/results/test_namespace/00_6ip.json b/tests/results/test_namespace/00_6ip.json
new file mode 100644
index 000000000..a6ae5a93e
--- /dev/null
+++ b/tests/results/test_namespace/00_6ip.json
@@ -0,0 +1,127 @@
+{
+ "rougail": {
+ "type": "namespace",
+ "informations": {
+ "paths": [
+ "rougail"
+ ],
+ "names": [
+ "rougail"
+ ],
+ "description": "Rougail",
+ "properties": [
+ {
+ "type": "mode",
+ "name": "standard"
+ }
+ ]
+ },
+ "children": {
+ "rougail.var1": {
+ "type": "variable",
+ "default": {
+ "name": "Default",
+ "values": "1.1.1.1"
+ },
+ "properties": [
+ {
+ "type": "type",
+ "name": "IP"
+ },
+ {
+ "type": "mode",
+ "name": "standard"
+ },
+ {
+ "type": "property",
+ "name": "mandatory"
+ }
+ ],
+ "validators": {
+ "name": "Validator",
+ "values": "reserved IP are allowed"
+ },
+ "paths": [
+ "rougail.var1"
+ ],
+ "names": [
+ "var1"
+ ],
+ "descriptions": [
+ "An IP."
+ ]
+ },
+ "rougail.var2": {
+ "type": "variable",
+ "default": {
+ "name": "Default",
+ "values": "1.1.1.1/24"
+ },
+ "properties": [
+ {
+ "type": "type",
+ "name": "IP"
+ },
+ {
+ "type": "mode",
+ "name": "standard"
+ },
+ {
+ "type": "property",
+ "name": "mandatory"
+ }
+ ],
+ "validators": {
+ "name": "Validators",
+ "values": [
+ "IP must be in CIDR format",
+ "reserved IP are allowed"
+ ]
+ },
+ "paths": [
+ "rougail.var2"
+ ],
+ "names": [
+ "var2"
+ ],
+ "descriptions": [
+ "An IP in CIDR format."
+ ],
+ "examples": {
+ "name": "Example",
+ "values": "192.168.0.128/25"
+ }
+ },
+ "rougail.var3": {
+ "type": "variable",
+ "default": {
+ "name": "Default",
+ "values": "1.1.1.1/24"
+ },
+ "properties": [
+ {
+ "type": "type",
+ "name": "cidr"
+ },
+ {
+ "type": "mode",
+ "name": "standard"
+ },
+ {
+ "type": "property",
+ "name": "mandatory"
+ }
+ ],
+ "paths": [
+ "rougail.var3"
+ ],
+ "names": [
+ "var3"
+ ],
+ "descriptions": [
+ "An IP in CIDR format with obsolete CIDR type."
+ ]
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/tests/results/test_namespace/00_6ip.md b/tests/results/test_namespace/00_6ip.md
new file mode 100644
index 000000000..bd0ecbd09
--- /dev/null
+++ b/tests/results/test_namespace/00_6ip.md
@@ -0,0 +1,8 @@
+# Variables for "Rougail"
+
+| Variable | Description |
+|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| **rougail.var1**
[`IP`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` | An IP.
**Validator**: reserved IP are allowed
**Default**: 1.1.1.1 |
+| **rougail.var2**
[`IP`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` | An IP in CIDR format.
**Validators**:
- IP must be in CIDR format
- reserved IP are allowed
**Default**: 1.1.1.1/24
**Example**: 192.168.0.128/25 |
+| **rougail.var3**
[`cidr`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` | An IP in CIDR format with obsolete CIDR type.
**Default**: 1.1.1.1/24 |
+
diff --git a/tests/results/test_namespace/00_6ip.sh b/tests/results/test_namespace/00_6ip.sh
new file mode 100644
index 000000000..e87f7b763
--- /dev/null
+++ b/tests/results/test_namespace/00_6ip.sh
@@ -0,0 +1,23 @@
+
+
+[1;4;96mVariables for [0m[1;4;96m"Rougail"[0m
+
+
+┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
+┃[1m [0m[1mVariable [0m[1m [0m┃[1m [0m[1mDescription [0m[1m [0m┃
+┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
+│ [1mrougail.var1[0m │ An IP. │
+│ [1;7m IP [0m [1;7m standard [0m [1;7m mandatory [0m │ [1mValidator[0m: reserved IP are allowed │
+│ │ [1mDefault[0m: 1.1.1.1 │
+├───────────────────────────────────────┼──────────────────────────────────────┤
+│ [1mrougail.var2[0m │ An IP in CIDR format. │
+│ [1;7m IP [0m [1;7m standard [0m [1;7m mandatory [0m │ [1mValidators[0m: │
+│ │ - IP must be in CIDR format │
+│ │ - reserved IP are allowed │
+│ │ [1mDefault[0m: 1.1.1.1/24 │
+│ │ [1mExample[0m: 192.168.0.128/25 │
+├───────────────────────────────────────┼──────────────────────────────────────┤
+│ [1mrougail.var3[0m │ An IP in CIDR format with obsolete │
+│ [1;7m cidr [0m [1;7m standard [0m [1;7m mandatory [0m │ CIDR type. │
+│ │ [1mDefault[0m: 1.1.1.1/24 │
+└───────────────────────────────────────┴──────────────────────────────────────┘
diff --git a/tests/results/test_namespace/00_6network.adoc b/tests/results/test_namespace/00_6network.adoc
new file mode 100644
index 000000000..490e3f19b
--- /dev/null
+++ b/tests/results/test_namespace/00_6network.adoc
@@ -0,0 +1,25 @@
+== Variables for "Rougail"
+
+[cols="1a,1a"]
+|====
+| Variable | Description
+|
+
+**rougail.var1** +
+`https://rougail.readthedocs.io/en/latest/variable.html#variables-types[network]` `standard` `mandatory` |
+An network. +
+**Default**: 1.1.1.0
+|
+
+**rougail.var2** +
+`https://rougail.readthedocs.io/en/latest/variable.html#variables-types[network]` `standard` `mandatory` |
+An network in CIDR format. +
+**Default**: 1.1.1.0/24
+|
+
+**rougail.var3** +
+`https://rougail.readthedocs.io/en/latest/variable.html#variables-types[network_cidr]` `standard` `mandatory` |
+An network in CIDR format with obsolete CIDR type. +
+**Default**: 1.1.1.0/24
+|====
+
diff --git a/tests/results/test_namespace/00_6network.json b/tests/results/test_namespace/00_6network.json
new file mode 100644
index 000000000..06ae78415
--- /dev/null
+++ b/tests/results/test_namespace/00_6network.json
@@ -0,0 +1,112 @@
+{
+ "rougail": {
+ "type": "namespace",
+ "informations": {
+ "paths": [
+ "rougail"
+ ],
+ "names": [
+ "rougail"
+ ],
+ "description": "Rougail",
+ "properties": [
+ {
+ "type": "mode",
+ "name": "standard"
+ }
+ ]
+ },
+ "children": {
+ "rougail.var1": {
+ "type": "variable",
+ "default": {
+ "name": "Default",
+ "values": "1.1.1.0"
+ },
+ "properties": [
+ {
+ "type": "type",
+ "name": "network"
+ },
+ {
+ "type": "mode",
+ "name": "standard"
+ },
+ {
+ "type": "property",
+ "name": "mandatory"
+ }
+ ],
+ "paths": [
+ "rougail.var1"
+ ],
+ "names": [
+ "var1"
+ ],
+ "descriptions": [
+ "An network."
+ ]
+ },
+ "rougail.var2": {
+ "type": "variable",
+ "default": {
+ "name": "Default",
+ "values": "1.1.1.0/24"
+ },
+ "properties": [
+ {
+ "type": "type",
+ "name": "network"
+ },
+ {
+ "type": "mode",
+ "name": "standard"
+ },
+ {
+ "type": "property",
+ "name": "mandatory"
+ }
+ ],
+ "paths": [
+ "rougail.var2"
+ ],
+ "names": [
+ "var2"
+ ],
+ "descriptions": [
+ "An network in CIDR format."
+ ]
+ },
+ "rougail.var3": {
+ "type": "variable",
+ "default": {
+ "name": "Default",
+ "values": "1.1.1.0/24"
+ },
+ "properties": [
+ {
+ "type": "type",
+ "name": "network_cidr"
+ },
+ {
+ "type": "mode",
+ "name": "standard"
+ },
+ {
+ "type": "property",
+ "name": "mandatory"
+ }
+ ],
+ "paths": [
+ "rougail.var3"
+ ],
+ "names": [
+ "var3"
+ ],
+ "descriptions": [
+ "An network in CIDR format with obsolete CIDR type."
+ ]
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/tests/results/test_namespace/00_6network.md b/tests/results/test_namespace/00_6network.md
new file mode 100644
index 000000000..37c6dd54f
--- /dev/null
+++ b/tests/results/test_namespace/00_6network.md
@@ -0,0 +1,8 @@
+# Variables for "Rougail"
+
+| Variable | Description |
+|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| **rougail.var1**
[`network`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` | An network.
**Default**: 1.1.1.0 |
+| **rougail.var2**
[`network`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` | An network in CIDR format.
**Default**: 1.1.1.0/24 |
+| **rougail.var3**
[`network_cidr`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` | An network in CIDR format with obsolete CIDR type.
**Default**: 1.1.1.0/24 |
+
diff --git a/tests/results/test_namespace/00_6network.sh b/tests/results/test_namespace/00_6network.sh
new file mode 100644
index 000000000..fd461e57d
--- /dev/null
+++ b/tests/results/test_namespace/00_6network.sh
@@ -0,0 +1,18 @@
+
+
+[1;4;96mVariables for [0m[1;4;96m"Rougail"[0m
+
+
+┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
+┃[1m [0m[1mVariable [0m[1m [0m┃[1m [0m[1mDescription [0m[1m [0m┃
+┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
+│ [1mrougail.var1[0m │ An network. │
+│ [1;7m network [0m [1;7m standard [0m [1;7m mandatory [0m │ [1mDefault[0m: 1.1.1.0 │
+├───────────────────────────────────────┼──────────────────────────────────────┤
+│ [1mrougail.var2[0m │ An network in CIDR format. │
+│ [1;7m network [0m [1;7m standard [0m [1;7m mandatory [0m │ [1mDefault[0m: 1.1.1.0/24 │
+├───────────────────────────────────────┼──────────────────────────────────────┤
+│ [1mrougail.var3[0m │ An network in CIDR format with │
+│ [1;7m network_cidr [0m [1;7m standard [0m [1;7m mandatory [0m │ obsolete CIDR type. │
+│ │ [1mDefault[0m: 1.1.1.0/24 │
+└───────────────────────────────────────┴──────────────────────────────────────┘
diff --git a/tests/results/test_namespace/00_9default_calculation_multi_optional_default.adoc b/tests/results/test_namespace/00_9default_calculation_multi_optional_default.adoc
new file mode 100644
index 000000000..754801742
--- /dev/null
+++ b/tests/results/test_namespace/00_9default_calculation_multi_optional_default.adoc
@@ -0,0 +1,19 @@
+== Variables for "Rougail"
+
+[cols="1a,1a"]
+|====
+| Variable | Description
+|
+
+**rougail.my_variable** +
+`https://rougail.readthedocs.io/en/latest/variable.html#variables-types[string]` `standard` `mandatory` |
+My_variable. +
+**Default**: val1
+|
+
+**rougail.my_calculated_variable** +
+`https://rougail.readthedocs.io/en/latest/variable.html#variables-types[string]` `standard` `mandatory` `unique` `multiple` |
+My_calculated_variable. +
+**Default**: the value of the variable "rougail.my_variable".
+|====
+
diff --git a/tests/results/test_namespace/00_9default_calculation_multi_optional_default.json b/tests/results/test_namespace/00_9default_calculation_multi_optional_default.json
new file mode 100644
index 000000000..5dd3bf1f0
--- /dev/null
+++ b/tests/results/test_namespace/00_9default_calculation_multi_optional_default.json
@@ -0,0 +1,86 @@
+{
+ "rougail": {
+ "type": "namespace",
+ "informations": {
+ "paths": [
+ "rougail"
+ ],
+ "names": [
+ "rougail"
+ ],
+ "description": "Rougail",
+ "properties": [
+ {
+ "type": "mode",
+ "name": "standard"
+ }
+ ]
+ },
+ "children": {
+ "rougail.my_variable": {
+ "type": "variable",
+ "default": {
+ "name": "Default",
+ "values": "val1"
+ },
+ "properties": [
+ {
+ "type": "type",
+ "name": "string"
+ },
+ {
+ "type": "mode",
+ "name": "standard"
+ },
+ {
+ "type": "property",
+ "name": "mandatory"
+ }
+ ],
+ "paths": [
+ "rougail.my_variable"
+ ],
+ "names": [
+ "my_variable"
+ ]
+ },
+ "rougail.my_calculated_variable": {
+ "type": "variable",
+ "default": {
+ "name": "Default",
+ "values": [
+ "the value of the variable \"rougail.my_variable\"."
+ ]
+ },
+ "properties": [
+ {
+ "type": "type",
+ "name": "string"
+ },
+ {
+ "type": "mode",
+ "name": "standard"
+ },
+ {
+ "type": "property",
+ "name": "mandatory"
+ },
+ {
+ "type": "property",
+ "name": "unique"
+ },
+ {
+ "type": "multiple",
+ "name": "multiple"
+ }
+ ],
+ "paths": [
+ "rougail.my_calculated_variable"
+ ],
+ "names": [
+ "my_calculated_variable"
+ ]
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/tests/results/test_namespace/00_9default_calculation_multi_optional_default.md b/tests/results/test_namespace/00_9default_calculation_multi_optional_default.md
new file mode 100644
index 000000000..c00f1646a
--- /dev/null
+++ b/tests/results/test_namespace/00_9default_calculation_multi_optional_default.md
@@ -0,0 +1,7 @@
+# Variables for "Rougail"
+
+| Variable | Description |
+|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| **rougail.my_variable**
[`string`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` | My_variable.
**Default**: val1 |
+| **rougail.my_calculated_variable**
[`string`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` `unique` `multiple` | My_calculated_variable.
**Default**: the value of the variable "rougail.my_variable". |
+
diff --git a/tests/results/test_namespace/00_9default_calculation_multi_optional_default.sh b/tests/results/test_namespace/00_9default_calculation_multi_optional_default.sh
new file mode 100644
index 000000000..91b301d2b
--- /dev/null
+++ b/tests/results/test_namespace/00_9default_calculation_multi_optional_default.sh
@@ -0,0 +1,15 @@
+
+
+[1;4;96mVariables for [0m[1;4;96m"Rougail"[0m
+
+
+┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
+┃[1m [0m[1mVariable [0m[1m [0m┃[1m [0m[1mDescription [0m[1m [0m┃
+┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
+│ [1mrougail.my_variable[0m │ My_variable. │
+│ [1;7m string [0m [1;7m standard [0m [1;7m mandatory [0m │ [1mDefault[0m: val1 │
+├───────────────────────────────────────┼──────────────────────────────────────┤
+│ [1mrougail.my_calculated_variable[0m │ My_calculated_variable. │
+│ [1;7m string [0m [1;7m standard [0m [1;7m mandatory [0m [1;7m [0m │ [1mDefault[0m: the value of the variable │
+│ [1;7munique [0m [1;7m multiple [0m │ "rougail.my_variable". │
+└───────────────────────────────────────┴──────────────────────────────────────┘
diff --git a/tests/results/test_namespace/01_9choice_variable_optional.adoc b/tests/results/test_namespace/01_9choice_variable_optional.adoc
new file mode 100644
index 000000000..4bde328b5
--- /dev/null
+++ b/tests/results/test_namespace/01_9choice_variable_optional.adoc
@@ -0,0 +1,17 @@
+== Variables for "Rougail"
+
+[cols="1a,1a"]
+|====
+| Variable | Description
+|
+
+**rougail.variable** +
+`https://rougail.readthedocs.io/en/latest/variable.html#variables-types[choice]` `standard` `mandatory` |
+A variable. +
+**Choices**:
+
+* a
+* b
+* c **← (default)**
+|====
+
diff --git a/tests/results/test_namespace/01_9choice_variable_optional.json b/tests/results/test_namespace/01_9choice_variable_optional.json
new file mode 100644
index 000000000..698a14c4e
--- /dev/null
+++ b/tests/results/test_namespace/01_9choice_variable_optional.json
@@ -0,0 +1,61 @@
+{
+ "rougail": {
+ "type": "namespace",
+ "informations": {
+ "paths": [
+ "rougail"
+ ],
+ "names": [
+ "rougail"
+ ],
+ "description": "Rougail",
+ "properties": [
+ {
+ "type": "mode",
+ "name": "standard"
+ }
+ ]
+ },
+ "children": {
+ "rougail.variable": {
+ "type": "variable",
+ "default": {
+ "name": "Default",
+ "values": "c"
+ },
+ "properties": [
+ {
+ "type": "type",
+ "name": "choice"
+ },
+ {
+ "type": "mode",
+ "name": "standard"
+ },
+ {
+ "type": "property",
+ "name": "mandatory"
+ }
+ ],
+ "default_is_already_set": true,
+ "choices": {
+ "name": "Choices",
+ "values": [
+ "a",
+ "b",
+ "c ← (default)"
+ ]
+ },
+ "paths": [
+ "rougail.variable"
+ ],
+ "names": [
+ "variable"
+ ],
+ "descriptions": [
+ "A variable."
+ ]
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/tests/results/test_namespace/01_9choice_variable_optional.md b/tests/results/test_namespace/01_9choice_variable_optional.md
new file mode 100644
index 000000000..cca23a9a5
--- /dev/null
+++ b/tests/results/test_namespace/01_9choice_variable_optional.md
@@ -0,0 +1,6 @@
+# Variables for "Rougail"
+
+| Variable | Description |
+|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| **rougail.variable**
[`choice`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` | A variable.
**Choices**:
- a
- b
- c **← (default)** |
+
diff --git a/tests/results/test_namespace/01_9choice_variable_optional.sh b/tests/results/test_namespace/01_9choice_variable_optional.sh
new file mode 100644
index 000000000..7331e02a9
--- /dev/null
+++ b/tests/results/test_namespace/01_9choice_variable_optional.sh
@@ -0,0 +1,14 @@
+
+
+[1;4;96mVariables for [0m[1;4;96m"Rougail"[0m
+
+
+┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
+┃[1m [0m[1mVariable [0m[1m [0m┃[1m [0m[1mDescription [0m[1m [0m┃
+┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
+│ [1mrougail.variable[0m │ A variable. │
+│ [1;7m choice [0m [1;7m standard [0m [1;7m mandatory [0m │ [1mChoices[0m: │
+│ │ - a │
+│ │ - b │
+│ │ - c [1m← (default)[0m │
+└───────────────────────────────────────┴──────────────────────────────────────┘
diff --git a/tests/results/test_namespace/04_5disabled_calculation_optional_default.adoc b/tests/results/test_namespace/04_5disabled_calculation_optional_default.adoc
new file mode 100644
index 000000000..cfecbefae
--- /dev/null
+++ b/tests/results/test_namespace/04_5disabled_calculation_optional_default.adoc
@@ -0,0 +1,25 @@
+== Variables for "Rougail"
+
+[cols="1a,1a"]
+|====
+| Variable | Description
+|
+
+**rougail.condition** +
+`https://rougail.readthedocs.io/en/latest/variable.html#variables-types[boolean]` `standard` `mandatory` |
+A condition. +
+**Default**: false
+|
+
+**rougail.var3** +
+`https://rougail.readthedocs.io/en/latest/variable.html#variables-types[string]` `standard` `__hidden__` |
+A second variable. +
+**Hidden**: when the variable "rougail.condition" has the value "true".
+|
+
+**rougail.var4** +
+`https://rougail.readthedocs.io/en/latest/variable.html#variables-types[string]` `standard` `__hidden__` |
+A forth variable. +
+**Hidden**: when the variable "rougail.condition" has the value "true".
+|====
+
diff --git a/tests/results/test_namespace/04_5disabled_calculation_optional_default.json b/tests/results/test_namespace/04_5disabled_calculation_optional_default.json
new file mode 100644
index 000000000..339acd0f8
--- /dev/null
+++ b/tests/results/test_namespace/04_5disabled_calculation_optional_default.json
@@ -0,0 +1,106 @@
+{
+ "rougail": {
+ "type": "namespace",
+ "informations": {
+ "paths": [
+ "rougail"
+ ],
+ "names": [
+ "rougail"
+ ],
+ "description": "Rougail",
+ "properties": [
+ {
+ "type": "mode",
+ "name": "standard"
+ }
+ ]
+ },
+ "children": {
+ "rougail.condition": {
+ "type": "variable",
+ "default": {
+ "name": "Default",
+ "values": false
+ },
+ "properties": [
+ {
+ "type": "type",
+ "name": "boolean"
+ },
+ {
+ "type": "mode",
+ "name": "standard"
+ },
+ {
+ "type": "property",
+ "name": "mandatory"
+ }
+ ],
+ "paths": [
+ "rougail.condition"
+ ],
+ "names": [
+ "condition"
+ ],
+ "descriptions": [
+ "A condition."
+ ]
+ },
+ "rougail.var3": {
+ "type": "variable",
+ "properties": [
+ {
+ "type": "type",
+ "name": "string"
+ },
+ {
+ "type": "mode",
+ "name": "standard"
+ },
+ {
+ "type": "property",
+ "name": "hidden",
+ "annotation": "when the variable \"rougail.condition\" has the value \"true\"."
+ }
+ ],
+ "paths": [
+ "rougail.var3"
+ ],
+ "names": [
+ "var3"
+ ],
+ "descriptions": [
+ "A second variable."
+ ]
+ },
+ "rougail.var4": {
+ "type": "variable",
+ "properties": [
+ {
+ "type": "type",
+ "name": "string"
+ },
+ {
+ "type": "mode",
+ "name": "standard"
+ },
+ {
+ "type": "property",
+ "name": "hidden",
+ "annotation": "when the variable \"rougail.condition\" has the value \"true\"."
+ }
+ ],
+ "paths": [
+ "rougail.var4"
+ ],
+ "names": [
+ "var4"
+ ],
+ "descriptions": [
+ "A forth variable."
+ ]
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/tests/results/test_namespace/04_5disabled_calculation_optional_default.md b/tests/results/test_namespace/04_5disabled_calculation_optional_default.md
new file mode 100644
index 000000000..a36af9419
--- /dev/null
+++ b/tests/results/test_namespace/04_5disabled_calculation_optional_default.md
@@ -0,0 +1,8 @@
+# Variables for "Rougail"
+
+| Variable | Description |
+|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| **rougail.condition**
[`boolean`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` | A condition.
**Default**: false |
+| **rougail.var3**
[`string`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` *`hidden`* | A second variable.
**Hidden**: when the variable "rougail.condition" has the value "true". |
+| **rougail.var4**
[`string`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` *`hidden`* | A forth variable.
**Hidden**: when the variable "rougail.condition" has the value "true". |
+
diff --git a/tests/results/test_namespace/04_5disabled_calculation_optional_default.sh b/tests/results/test_namespace/04_5disabled_calculation_optional_default.sh
new file mode 100644
index 000000000..864ee853a
--- /dev/null
+++ b/tests/results/test_namespace/04_5disabled_calculation_optional_default.sh
@@ -0,0 +1,21 @@
+
+
+[1;4;96mVariables for [0m[1;4;96m"Rougail"[0m
+
+
+┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
+┃[1m [0m[1mVariable [0m[1m [0m┃[1m [0m[1mDescription [0m[1m [0m┃
+┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
+│ [1mrougail.condition[0m │ A condition. │
+│ [1;7m boolean [0m [1;7m standard [0m [1;7m mandatory [0m │ [1mDefault[0m: false │
+├───────────────────────────────────────┼──────────────────────────────────────┤
+│ [1mrougail.var3[0m │ A second variable. │
+│ [1;7m string [0m [1;7m standard [0m [1;3;7m hidden [0m │ [1mHidden[0m: when the variable │
+│ │ "rougail.condition" has the value │
+│ │ "true". │
+├───────────────────────────────────────┼──────────────────────────────────────┤
+│ [1mrougail.var4[0m │ A forth variable. │
+│ [1;7m string [0m [1;7m standard [0m [1;3;7m hidden [0m │ [1mHidden[0m: when the variable │
+│ │ "rougail.condition" has the value │
+│ │ "true". │
+└───────────────────────────────────────┴──────────────────────────────────────┘
diff --git a/tests/results/test_namespace/40_2leadership_calculation_index_2.adoc b/tests/results/test_namespace/40_2leadership_calculation_index_2.adoc
new file mode 100644
index 000000000..4534ca67e
--- /dev/null
+++ b/tests/results/test_namespace/40_2leadership_calculation_index_2.adoc
@@ -0,0 +1,29 @@
+== Variables for "Rougail"
+
+=== a leadership
+
+`standard`
+
+This family contains lists of variable blocks.
+
+[cols="1a,1a"]
+|====
+| Variable | Description
+|
+
+**rougail.leader.leader** +
+`https://rougail.readthedocs.io/en/latest/variable.html#variables-types[string]` `standard` `mandatory` `unique` `multiple` |
+A leader. +
+**Default**:
+
+* a
+* b
+* c
+|
+
+**rougail.leader.follower1** +
+`https://rougail.readthedocs.io/en/latest/variable.html#variables-types[integer]` `standard` `mandatory` |
+A follower. +
+**Default**: the value of the index.
+|====
+
diff --git a/tests/results/test_namespace/40_2leadership_calculation_index_2.json b/tests/results/test_namespace/40_2leadership_calculation_index_2.json
new file mode 100644
index 000000000..5cb6f1ea0
--- /dev/null
+++ b/tests/results/test_namespace/40_2leadership_calculation_index_2.json
@@ -0,0 +1,117 @@
+{
+ "rougail": {
+ "type": "namespace",
+ "informations": {
+ "paths": [
+ "rougail"
+ ],
+ "names": [
+ "rougail"
+ ],
+ "description": "Rougail",
+ "properties": [
+ {
+ "type": "mode",
+ "name": "standard"
+ }
+ ]
+ },
+ "children": {
+ "leader": {
+ "type": "leadership",
+ "informations": {
+ "paths": [
+ "rougail.leader"
+ ],
+ "names": [
+ "leader"
+ ],
+ "description": "a leadership",
+ "properties": [
+ {
+ "type": "mode",
+ "name": "standard"
+ }
+ ],
+ "help": [
+ "This family contains lists of variable blocks."
+ ]
+ },
+ "children": {
+ "rougail.leader.leader": {
+ "type": "variable",
+ "default": {
+ "name": "Default",
+ "values": [
+ "a",
+ "b",
+ "c"
+ ]
+ },
+ "properties": [
+ {
+ "type": "type",
+ "name": "string"
+ },
+ {
+ "type": "mode",
+ "name": "standard"
+ },
+ {
+ "type": "property",
+ "name": "mandatory"
+ },
+ {
+ "type": "property",
+ "name": "unique"
+ },
+ {
+ "type": "multiple",
+ "name": "multiple"
+ }
+ ],
+ "paths": [
+ "rougail.leader.leader"
+ ],
+ "names": [
+ "leader"
+ ],
+ "descriptions": [
+ "A leader."
+ ]
+ },
+ "rougail.leader.follower1": {
+ "type": "variable",
+ "default": {
+ "name": "Default",
+ "values": "the value of the index."
+ },
+ "properties": [
+ {
+ "type": "type",
+ "name": "integer"
+ },
+ {
+ "type": "mode",
+ "name": "standard"
+ },
+ {
+ "type": "property",
+ "name": "mandatory"
+ }
+ ],
+ "paths": [
+ "rougail.leader.follower1"
+ ],
+ "names": [
+ "follower1"
+ ],
+ "descriptions": [
+ "A follower."
+ ]
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/tests/results/test_namespace/40_2leadership_calculation_index_2.md b/tests/results/test_namespace/40_2leadership_calculation_index_2.md
new file mode 100644
index 000000000..c613ec4be
--- /dev/null
+++ b/tests/results/test_namespace/40_2leadership_calculation_index_2.md
@@ -0,0 +1,13 @@
+# Variables for "Rougail"
+
+## a leadership
+
+`standard`
+
+This family contains lists of variable blocks.
+
+| Variable | Description |
+|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| **rougail.leader.leader**
[`string`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` `unique` `multiple` | A leader.
**Default**:
- a
- b
- c |
+| **rougail.leader.follower1**
[`integer`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` | A follower.
**Default**: the value of the index. |
+
diff --git a/tests/results/test_namespace/40_2leadership_calculation_index_2.sh b/tests/results/test_namespace/40_2leadership_calculation_index_2.sh
new file mode 100644
index 000000000..3c654a093
--- /dev/null
+++ b/tests/results/test_namespace/40_2leadership_calculation_index_2.sh
@@ -0,0 +1,28 @@
+
+
+[1;4;96mVariables for [0m[1;4;96m"Rougail"[0m
+
+
+
+
+ [1;4;92ma leadership[0m
+
+
+[1;7m standard [0m
+
+
+This family contains lists of variable blocks.
+
+
+┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
+┃[1m [0m[1mVariable [0m[1m [0m┃[1m [0m[1mDescription [0m[1m [0m┃
+┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
+│ [1mrougail.leader.leader[0m │ A leader. │
+│ [1;7m string [0m [1;7m standard [0m [1;7m mandatory [0m [1;7m [0m │ [1mDefault[0m: │
+│ [1;7munique [0m [1;7m multiple [0m │ - a │
+│ │ - b │
+│ │ - c │
+├───────────────────────────────────────┼──────────────────────────────────────┤
+│ [1mrougail.leader.follower1[0m │ A follower. │
+│ [1;7m integer [0m [1;7m standard [0m [1;7m mandatory [0m │ [1mDefault[0m: the value of the index. │
+└───────────────────────────────────────┴──────────────────────────────────────┘
diff --git a/tests/results/test_namespace/60_0family_dynamic_variable_optional.adoc b/tests/results/test_namespace/60_0family_dynamic_variable_optional.adoc
new file mode 100644
index 000000000..a323c5bd4
--- /dev/null
+++ b/tests/results/test_namespace/60_0family_dynamic_variable_optional.adoc
@@ -0,0 +1,25 @@
+== Variables for "Rougail"
+
+=== a dynamic family
+
+`standard`
+
+This family builds families dynamically.
+
+**Identifiers**:
+
+* a
+* b
+
+[cols="1a,1a"]
+|====
+| Variable | Description
+|
+
+**rougail.dyn__a__.var** +
+**rougail.dyn__b__.var** +
+`https://rougail.readthedocs.io/en/latest/variable.html#variables-types[string]` `standard` `mandatory` |
+A variable inside dynamic family. +
+**Default**: val
+|====
+
diff --git a/tests/results/test_namespace/60_0family_dynamic_variable_optional.json b/tests/results/test_namespace/60_0family_dynamic_variable_optional.json
new file mode 100644
index 000000000..58510c2f1
--- /dev/null
+++ b/tests/results/test_namespace/60_0family_dynamic_variable_optional.json
@@ -0,0 +1,83 @@
+{
+ "rougail": {
+ "type": "namespace",
+ "informations": {
+ "paths": [
+ "rougail"
+ ],
+ "names": [
+ "rougail"
+ ],
+ "description": "Rougail",
+ "properties": [
+ {
+ "type": "mode",
+ "name": "standard"
+ }
+ ]
+ },
+ "children": {
+ "dyn{{ identifier }}": {
+ "type": "dynamic",
+ "informations": {
+ "paths": [
+ "rougail.dyna",
+ "rougail.dynb"
+ ],
+ "names": [
+ "dyna",
+ "dynb"
+ ],
+ "description": "a dynamic family",
+ "properties": [
+ {
+ "type": "mode",
+ "name": "standard"
+ }
+ ],
+ "identifiers": [
+ "a",
+ "b"
+ ],
+ "help": [
+ "This family builds families dynamically."
+ ]
+ },
+ "children": {
+ "rougail.dyn{{ identifier }}.var": {
+ "paths": [
+ "rougail.dyna.var",
+ "rougail.dynb.var"
+ ],
+ "names": [
+ "var",
+ "var"
+ ],
+ "type": "variable",
+ "default": {
+ "name": "Default",
+ "values": "val"
+ },
+ "properties": [
+ {
+ "type": "type",
+ "name": "string"
+ },
+ {
+ "type": "mode",
+ "name": "standard"
+ },
+ {
+ "type": "property",
+ "name": "mandatory"
+ }
+ ],
+ "descriptions": [
+ "A variable inside dynamic family."
+ ]
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/tests/results/test_namespace/60_0family_dynamic_variable_optional.md b/tests/results/test_namespace/60_0family_dynamic_variable_optional.md
new file mode 100644
index 000000000..19237a242
--- /dev/null
+++ b/tests/results/test_namespace/60_0family_dynamic_variable_optional.md
@@ -0,0 +1,14 @@
+# Variables for "Rougail"
+
+## a dynamic family
+
+`standard`
+
+This family builds families dynamically.
+
+**Identifiers**:
- a
- b
+
+| Variable | Description |
+|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| **rougail.dyn*a*.var**
**rougail.dyn*b*.var**
[`string`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` | A variable inside dynamic family.
**Default**: val |
+
diff --git a/tests/results/test_namespace/60_0family_dynamic_variable_optional.sh b/tests/results/test_namespace/60_0family_dynamic_variable_optional.sh
new file mode 100644
index 000000000..27216713a
--- /dev/null
+++ b/tests/results/test_namespace/60_0family_dynamic_variable_optional.sh
@@ -0,0 +1,28 @@
+
+
+[1;4;96mVariables for [0m[1;4;96m"Rougail"[0m
+
+
+
+
+ [1;4;92ma dynamic family[0m
+
+
+[1;7m standard [0m
+
+
+This family builds families dynamically.
+
+
+[1mIdentifiers[0m:
+- a
+- b
+
+
+┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
+┃[1m [0m[1mVariable [0m[1m [0m┃[1m [0m[1mDescription [0m[1m [0m┃
+┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
+│ [1mrougail.dyn[0m[1;3ma[0m[1m.var[0m │ A variable inside dynamic family. │
+│ [1mrougail.dyn[0m[1;3mb[0m[1m.var[0m │ [1mDefault[0m: val │
+│ [1;7m string [0m [1;7m standard [0m [1;7m mandatory [0m │ │
+└───────────────────────────────────────┴──────────────────────────────────────┘
diff --git a/tests/results/test_namespace/warnings_00_2default_calculated_variable b/tests/results/test_namespace/warnings_00_2default_calculated_variable
new file mode 100644
index 000000000..0637a088a
--- /dev/null
+++ b/tests/results/test_namespace/warnings_00_2default_calculated_variable
@@ -0,0 +1 @@
+[]
\ No newline at end of file
diff --git a/tests/results/test_namespace/warnings_00_6ip b/tests/results/test_namespace/warnings_00_6ip
new file mode 100644
index 000000000..faed2a93d
--- /dev/null
+++ b/tests/results/test_namespace/warnings_00_6ip
@@ -0,0 +1 @@
+["the variable \"rougail.var3\" has a depreciated type \"cidr\", please use type \"ip\" with attribute cidr=True instead in \"../../rougail-tests/structures/00_6ip/rougail/00-base.yml\""]
\ No newline at end of file
diff --git a/tests/results/test_namespace/warnings_00_6network b/tests/results/test_namespace/warnings_00_6network
new file mode 100644
index 000000000..c93b326b1
--- /dev/null
+++ b/tests/results/test_namespace/warnings_00_6network
@@ -0,0 +1 @@
+["the variable \"rougail.var3\" has a depreciated type \"network_cidr\", please use type \"network\" with attribute cidr=True instead in \"../../rougail-tests/structures/00_6network/rougail/00-base.yml\""]
\ No newline at end of file
diff --git a/tests/results/test_namespace/warnings_00_9default_calculation_multi_optional_default b/tests/results/test_namespace/warnings_00_9default_calculation_multi_optional_default
new file mode 100644
index 000000000..d860b3c37
--- /dev/null
+++ b/tests/results/test_namespace/warnings_00_9default_calculation_multi_optional_default
@@ -0,0 +1 @@
+["No attribute \"description\" for \"rougail.my_variable\" in \"../../rougail-tests/structures/00_9default_calculation_multi_optional_default/rougail/00-base.yml\"", "No attribute \"description\" for \"rougail.my_calculated_variable\" in \"../../rougail-tests/structures/00_9default_calculation_multi_optional_default/rougail/00-base.yml\""]
\ No newline at end of file
diff --git a/tests/results/test_namespace/warnings_01_9choice_variable_optional b/tests/results/test_namespace/warnings_01_9choice_variable_optional
new file mode 100644
index 000000000..0637a088a
--- /dev/null
+++ b/tests/results/test_namespace/warnings_01_9choice_variable_optional
@@ -0,0 +1 @@
+[]
\ No newline at end of file
diff --git a/tests/results/test_namespace/warnings_04_5disabled_calculation_optional_default b/tests/results/test_namespace/warnings_04_5disabled_calculation_optional_default
new file mode 100644
index 000000000..0637a088a
--- /dev/null
+++ b/tests/results/test_namespace/warnings_04_5disabled_calculation_optional_default
@@ -0,0 +1 @@
+[]
\ No newline at end of file
diff --git a/tests/results/test_namespace/warnings_40_2leadership_calculation_index_2 b/tests/results/test_namespace/warnings_40_2leadership_calculation_index_2
new file mode 100644
index 000000000..0637a088a
--- /dev/null
+++ b/tests/results/test_namespace/warnings_40_2leadership_calculation_index_2
@@ -0,0 +1 @@
+[]
\ No newline at end of file
diff --git a/tests/results/test_namespace/warnings_60_0family_dynamic_variable_optional b/tests/results/test_namespace/warnings_60_0family_dynamic_variable_optional
new file mode 100644
index 000000000..0637a088a
--- /dev/null
+++ b/tests/results/test_namespace/warnings_60_0family_dynamic_variable_optional
@@ -0,0 +1 @@
+[]
\ No newline at end of file
diff --git a/tests/results/test_namespace_examples/00_2default_calculated_variable.md b/tests/results/test_namespace_examples/00_2default_calculated_variable.md
new file mode 100644
index 000000000..efafd8669
--- /dev/null
+++ b/tests/results/test_namespace_examples/00_2default_calculated_variable.md
@@ -0,0 +1,18 @@
+# Example with mandatory variables not filled in
+
+```yaml
+---
+rougail:
+ var1:
+ - example.net
+```
+# Example with all variables modifiable
+
+```yaml
+---
+rougail:
+ var1:
+ - example.net
+ var2:
+ - example.net
+```
diff --git a/tests/results/test_namespace_examples/00_6ip.md b/tests/results/test_namespace_examples/00_6ip.md
new file mode 100644
index 000000000..c7537a3d5
--- /dev/null
+++ b/tests/results/test_namespace_examples/00_6ip.md
@@ -0,0 +1,9 @@
+# Example with all variables modifiable
+
+```yaml
+---
+rougail:
+ var1: 1.1.1.1
+ var2: 192.168.0.128/25
+ var3: 1.1.1.1/24
+```
diff --git a/tests/results/test_namespace_examples/00_6network.md b/tests/results/test_namespace_examples/00_6network.md
new file mode 100644
index 000000000..a6c8dc905
--- /dev/null
+++ b/tests/results/test_namespace_examples/00_6network.md
@@ -0,0 +1,9 @@
+# Example with all variables modifiable
+
+```yaml
+---
+rougail:
+ var1: 1.1.1.0
+ var2: 1.1.1.0/24
+ var3: 1.1.1.0/24
+```
diff --git a/tests/results/test_namespace_examples/00_9default_calculation_multi_optional_default.md b/tests/results/test_namespace_examples/00_9default_calculation_multi_optional_default.md
new file mode 100644
index 000000000..c4cc90ebd
--- /dev/null
+++ b/tests/results/test_namespace_examples/00_9default_calculation_multi_optional_default.md
@@ -0,0 +1,10 @@
+# Example with all variables modifiable
+
+```yaml
+---
+rougail:
+ my_variable: val1
+ my_calculated_variable:
+ - val1
+ - value
+```
diff --git a/tests/results/test_namespace_examples/01_9choice_variable_optional.md b/tests/results/test_namespace_examples/01_9choice_variable_optional.md
new file mode 100644
index 000000000..eae0f2319
--- /dev/null
+++ b/tests/results/test_namespace_examples/01_9choice_variable_optional.md
@@ -0,0 +1,7 @@
+# Example with all variables modifiable
+
+```yaml
+---
+rougail:
+ variable: c
+```
diff --git a/tests/results/test_namespace_examples/04_5disabled_calculation_optional_default.md b/tests/results/test_namespace_examples/04_5disabled_calculation_optional_default.md
new file mode 100644
index 000000000..cf754c0a7
--- /dev/null
+++ b/tests/results/test_namespace_examples/04_5disabled_calculation_optional_default.md
@@ -0,0 +1,9 @@
+# Example with all variables modifiable
+
+```yaml
+---
+rougail:
+ condition: false
+ var3: example
+ var4: example
+```
diff --git a/tests/results/test_namespace_examples/40_2leadership_calculation_index_2.md b/tests/results/test_namespace_examples/40_2leadership_calculation_index_2.md
new file mode 100644
index 000000000..276adb8e8
--- /dev/null
+++ b/tests/results/test_namespace_examples/40_2leadership_calculation_index_2.md
@@ -0,0 +1,13 @@
+# Example with all variables modifiable
+
+```yaml
+---
+rougail:
+ leader:
+ - leader: a
+ follower1: 0
+ - leader: b
+ follower1: 1
+ - leader: c
+ follower1: 2
+```
diff --git a/tests/results/test_namespace_examples/60_0family_dynamic_variable_optional.md b/tests/results/test_namespace_examples/60_0family_dynamic_variable_optional.md
new file mode 100644
index 000000000..4b2eac239
--- /dev/null
+++ b/tests/results/test_namespace_examples/60_0family_dynamic_variable_optional.md
@@ -0,0 +1,10 @@
+# Example with all variables modifiable
+
+```yaml
+---
+rougail:
+ dyna:
+ var: val
+ dynb:
+ var: val
+```
diff --git a/tests/results/test_namespace_examples/warnings_00_2default_calculated_variable b/tests/results/test_namespace_examples/warnings_00_2default_calculated_variable
new file mode 100644
index 000000000..0637a088a
--- /dev/null
+++ b/tests/results/test_namespace_examples/warnings_00_2default_calculated_variable
@@ -0,0 +1 @@
+[]
\ No newline at end of file
diff --git a/tests/results/test_namespace_examples/warnings_00_6ip b/tests/results/test_namespace_examples/warnings_00_6ip
new file mode 100644
index 000000000..faed2a93d
--- /dev/null
+++ b/tests/results/test_namespace_examples/warnings_00_6ip
@@ -0,0 +1 @@
+["the variable \"rougail.var3\" has a depreciated type \"cidr\", please use type \"ip\" with attribute cidr=True instead in \"../../rougail-tests/structures/00_6ip/rougail/00-base.yml\""]
\ No newline at end of file
diff --git a/tests/results/test_namespace_examples/warnings_00_6network b/tests/results/test_namespace_examples/warnings_00_6network
new file mode 100644
index 000000000..c93b326b1
--- /dev/null
+++ b/tests/results/test_namespace_examples/warnings_00_6network
@@ -0,0 +1 @@
+["the variable \"rougail.var3\" has a depreciated type \"network_cidr\", please use type \"network\" with attribute cidr=True instead in \"../../rougail-tests/structures/00_6network/rougail/00-base.yml\""]
\ No newline at end of file
diff --git a/tests/results/test_namespace_examples/warnings_00_9default_calculation_multi_optional_default b/tests/results/test_namespace_examples/warnings_00_9default_calculation_multi_optional_default
new file mode 100644
index 000000000..d860b3c37
--- /dev/null
+++ b/tests/results/test_namespace_examples/warnings_00_9default_calculation_multi_optional_default
@@ -0,0 +1 @@
+["No attribute \"description\" for \"rougail.my_variable\" in \"../../rougail-tests/structures/00_9default_calculation_multi_optional_default/rougail/00-base.yml\"", "No attribute \"description\" for \"rougail.my_calculated_variable\" in \"../../rougail-tests/structures/00_9default_calculation_multi_optional_default/rougail/00-base.yml\""]
\ No newline at end of file
diff --git a/tests/results/test_namespace_examples/warnings_01_9choice_variable_optional b/tests/results/test_namespace_examples/warnings_01_9choice_variable_optional
new file mode 100644
index 000000000..0637a088a
--- /dev/null
+++ b/tests/results/test_namespace_examples/warnings_01_9choice_variable_optional
@@ -0,0 +1 @@
+[]
\ No newline at end of file
diff --git a/tests/results/test_namespace_examples/warnings_04_5disabled_calculation_optional_default b/tests/results/test_namespace_examples/warnings_04_5disabled_calculation_optional_default
new file mode 100644
index 000000000..0637a088a
--- /dev/null
+++ b/tests/results/test_namespace_examples/warnings_04_5disabled_calculation_optional_default
@@ -0,0 +1 @@
+[]
\ No newline at end of file
diff --git a/tests/results/test_namespace_examples/warnings_40_2leadership_calculation_index_2 b/tests/results/test_namespace_examples/warnings_40_2leadership_calculation_index_2
new file mode 100644
index 000000000..0637a088a
--- /dev/null
+++ b/tests/results/test_namespace_examples/warnings_40_2leadership_calculation_index_2
@@ -0,0 +1 @@
+[]
\ No newline at end of file
diff --git a/tests/results/test_namespace_examples/warnings_60_0family_dynamic_variable_optional b/tests/results/test_namespace_examples/warnings_60_0family_dynamic_variable_optional
new file mode 100644
index 000000000..0637a088a
--- /dev/null
+++ b/tests/results/test_namespace_examples/warnings_60_0family_dynamic_variable_optional
@@ -0,0 +1 @@
+[]
\ No newline at end of file