rougail/doc/param/variable.md
2023-11-02 22:14:36 +01:00

3.4 KiB

Paramètre de type "variable"

Il est possible de spécifier le nom d'une variable qui peut ne pas exister :

---
version: '1.0'
my_variable:
  default:
    type: jinja
    jinja: |+
      {% if value %}
      value
      {% endif %}      
    params:
      value:
        type: variable
        variable: rougail.unknown_variable
        optional: true

La variable "rougail.unknown_variable" n'existant, value sera égal à None et la valeur de la variable "rougail.my_variable" sera aussi égale à None. Si "rougail.unknown_variable" est créé dans un autre dictionnaire, sa valeur sera ainsi copié.

Paramètre avec variable potentiellement désactivée

Si une variable est désactivé, l'utilisation de cette variable peut poser problème.

Il est possible de ne pas générer d'erreur si une variable est désactivé en utilisant le paramètre "propertyerror" :

---
version: '1.0'
disabled_variable:
  disabled: true
my_variable:
  default:
    type: jinja
    jinja: |+
      {% if value is defined and value %}
      value
      {% endif %}      
    params:
      value:
        type: variable
        variable: rougail.disabled_variable
        propertyerror: false

Dans ce cas, si la variable est désactivé, le paramètre n'est jamais donnée à la fonction de destination.

Paramètre avec variable dynamique

Il est possible de faire un calcul avec comme paramètre une variable d'une famille dynamique mais pour une suffix particulier.

Par exemple :

---
version: '1.0'
varname:
  multi: true
  default:
    - val1
    - val2
my_dyn_family_:
  type: dynamic
  variable: rougail.varname
  description: 'Describe '
  my_dyn_var_:
    type: string
    default: "val"
my_variable:
  multi: true
  unique: false
  default:
    type: jinja
    jinja: |+
      {% for val in value %}
      {{ val }}
      {% endfor %}      
    params:
      value:
        type: variable
        variable: rougail.my_dyn_family_.my_dyn_var_
---
version: '1.0'
varname:
  multi: true
  default:
    - val1
    - val2
my_dyn_family_:
  type: dynamic
  variable: rougail.varname
  description: 'Describe '
  my_dyn_var_:
    type: string
    default: "val"
my_variable:
  default:
    type: jinja
    jinja: |+
      {% if value is defined and value %}
      {{ value }}
      {% endif %}      
    params:
      value:
        type: variable
        variable: rougail.my_dyn_family_val1.my_dyn_var_val1
---
version: '1.0'
varname:
  multi: true
  default:
    - val1
    - val2
my_dyn_family_:
  type: dynamic
  variable: rougail.varname
  description: 'Describe '
  my_dyn_var_:
    type: string
    default:
      type: jinja
      jinja: '{{ value }}'
      params:
        value:
          type: suffix

PAS LE BON FICHIER :

---
version: '1.0'
varname:
  multi: true
  default:
    - val1
    - val2
my_dyn_family_:
  type: dynamic
  variable: rougail.varname
  description: 'Describe '
  my_dyn_var_:
    type: string
    default:
      type: suffix

Dans ce cas, la valeur du paramètre de la fonction sera la valeur de la variable "vardyn" pour la famille ayant le suffix "val1".

Il peut être utile de récupérer la valeur du suffix dans la fonction, pour cela il suffit de mettre un paramètre de type suffix :

<param type="suffix"/>

En YAML :

param:
- type: suffix

Dans l'exemple précédent la valeur de ce paramètre sera "val1".