Fonction Sass
Les fonctions Sass permettent de définir de nouvelles fonctions personnalisées appelables par le code Sass. Elles permettent également de surcharger les instructions de débogage ou d'erreur. Vous pouvez également définir une fonction de secours, appelée pour chaque fonction inconnue présente dans le code Sass. Les fonctions reçoivent zéro ou plusieurs valeurs Sass_Values ??(une valeur Sass_List) et doivent également renvoyer une valeur Sass_Value. Renvoyer une erreur Sass_Error pour signaler une erreur.
Signatures spéciales
Signature | Description |
---|---|
* | Implémentation de secours |
@warn | Surcharge des instructions d'avertissement |
@error | Surcharge des instructions d'erreur |
@debug | Surcharge des instructions de débogage |
Remarque : L'implémentation de secours recevra le nom de la fonction appelée comme premier paramètre, avant tous les paramètres de la fonction d'origine. Ces fonctionnalités sont relativement nouvelles et doivent être considérées comme expérimentales.
Utilisation de base
- #include "sass/functions.h"
API de fonction Sass
- // Déclaration anticipée
- struct Sass_Compiler;
- struct Sass_Function;
-
- // Aides Typedef pour les listes de fonctions personnalisées
- typedef struct Sass_Function (*Sass_Function_Entry);
- typedef struct Sass_Function* (*Sass_Function_List);
- // Typedef définissant la signature de la fonction et le type de retour
- typedef union Sass_Value* (*Sass_Function_Fn)
- (const union Sass_Value*, Sass_Function_Entry cb, struct Sass_Compiler* compiler);
-
- // Créateurs de listes de fonctions et de descripteurs de fonctions Sass
- Sass_Function_List sass_make_function_list (size_t length);
- Sass_Function_Entry sass_make_function (const char* signature, Sass_Function_Fn cb, void* cookie);
- // Au cas où vous auriez besoin de les libérer vous-même
- void sass_delete_function (Sass_Function_Entry entry);
- void sass_delete_function_list (Sass_Function_List list);
-
- // Setters et getters pour les rappels sur les listes de fonctions
- Sass_Function_Entry sass_function_get_list_entry(Sass_Function_List list, size_t pos);
- void sass_function_set_list_entry(Sass_Function_List list, size_t pos, Sass_Function_Entry cb);
-
- // Setters pour insérer une entrée dans la liste d'importation (vous pouvez également utiliser l'accès [] directement)
- // Puisqu'il s'agit de pointeurs, leur taille doit être garantie et fixe.
- void sass_import_set_list_entry (Sass_Import_List list, size_t idx, Sass_Import_Entry entry);
- Sass_Import_Entry sass_import_get_list_entry (Sass_Import_List list, size_t idx);
-
- // Getters pour les descripteurs de fonctions personnalisés
- const char* sass_function_get_signature (Sass_Function_Entry cb);
- Sass_Function_Fn sass_function_get_function (Sass_Function_Entry cb);
- void* sass_function_get_cookie (Sass_Function_Entry cb);
-
- // Getters pour l'entrée de l'appelé
- const char* sass_callee_get_name (Sass_Callee_Entry);
- const char* sass_callee_get_path (Sass_Callee_Entry);
- size_t sass_callee_get_line (Sass_Callee_Entry);
- size_t sass_callee_get_column (Sass_Callee_Entry);
- enum Sass_Callee_Type sass_callee_get_type (Sass_Callee_Entry);
- Sass_Env_Frame sass_callee_get_env (Sass_Callee_Entry);
-
- // Getters et Setters pour les environnements (lexicaux, locaux et globaux)
- union Sass_Value* sass_env_get_lexical (Sass_Env_Frame, const char*);
- void sass_env_set_lexical (Sass_Env_Frame, const char*, union Sass_Value*);
- union Sass_Value* sass_env_get_local (Sass_Env_Frame, const char*);
- void sass_env_set_local (Sass_Env_Frame, const char*, union Sass_Value*);
- union Sass_Value* sass_env_get_global (Sass_Env_Frame, const char*);
- void sass_env_set_global (Sass_Env_Frame, const char*, union Sass_Value*);