Abstract presentation
=========================

Why another validating library?
-------------------------------------

Using Rougail in your application or your python libraries can tansform end user consumer defined consistency rules into highly consistent business objects.

We then have to say that the handling system used to ensure the variables integrity is another python library, called :term:`Tiramisu`. Rougail is currently strongly affiliated with Tiramisu.

.. note:: Rougail is currently intended to work in coordination with :term:`Tiramisu` and **is not** intended to be connected with any other consistency handling system.

Explained differently, Rougail allows you to easily implement an integration of the powerful tiramisu consistency handling system.

What is a consistency handling system ?
-------------------------------------------

.. questions:: Rougail, Tiramisu: What is it all about?

    **Question**: OK, I have understood that the Rougail library allows me to take advantage of the :xref:`tiramisu` consistency handling library. But what is all this for? What is exactly a consistency handling system? And again, what is this :xref:`Tiramisu library <tiramisu library>` used for?

    **Answer**: Well, we will explain in details what this :xref:`tiramisu` library is and what Rougail is. 
    
    In (very) short: 

    - Rougail is the YAML consistency description of a :term:`context`\ 's situation
    - Tiramisu is the consistency engine linter

.. glossary::

   Tiramisu

        :xref:`tiramisu` is a consistency handling system that has initially been designed
        in the configuration management scope. Until now,
        this library is generally used to handle configuration options.

        It manages variables and group of variables. In the Tiramisu scope we call
        it *options* and *option descriptions*.

        Here is the :xref:`tiramisu documentation <tiramisu>`.

In the Rougail scope, we call it :term:`variables <variable>` and :term:`families <family>`.
In Rougail, the families and variables are located in the :term:`structure files <structure file>`.

