Section courante

A propos

Section administrative du site

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

  1. #include "sass/functions.h"

API de fonction Sass

  1. // Déclaration anticipée
  2. struct Sass_Compiler;
  3. struct Sass_Function;
  4.  
  5. // Aides Typedef pour les listes de fonctions personnalisées
  6. typedef struct Sass_Function (*Sass_Function_Entry);
  7. typedef struct Sass_Function* (*Sass_Function_List);
  8. // Typedef définissant la signature de la fonction et le type de retour
  9. typedef union Sass_Value* (*Sass_Function_Fn)
  10.   (const union Sass_Value*, Sass_Function_Entry cb, struct Sass_Compiler* compiler);
  11.  
  12. // Créateurs de listes de fonctions et de descripteurs de fonctions Sass
  13. Sass_Function_List sass_make_function_list (size_t length);
  14. Sass_Function_Entry sass_make_function (const char* signature, Sass_Function_Fn cb, void* cookie);
  15. // Au cas où vous auriez besoin de les libérer vous-même
  16. void sass_delete_function (Sass_Function_Entry entry);
  17. void sass_delete_function_list (Sass_Function_List list);
  18.  
  19. // Setters et getters pour les rappels sur les listes de fonctions
  20. Sass_Function_Entry sass_function_get_list_entry(Sass_Function_List list, size_t pos);
  21. void sass_function_set_list_entry(Sass_Function_List list, size_t pos, Sass_Function_Entry cb);
  22.  
  23. // Setters pour insérer une entrée dans la liste d'importation (vous pouvez également utiliser l'accès [] directement)
  24. // Puisqu'il s'agit de pointeurs, leur taille doit être garantie et fixe.
  25. void sass_import_set_list_entry (Sass_Import_List list, size_t idx, Sass_Import_Entry entry);
  26. Sass_Import_Entry sass_import_get_list_entry (Sass_Import_List list, size_t idx);
  27.  
  28. // Getters pour les descripteurs de fonctions personnalisés
  29. const char* sass_function_get_signature (Sass_Function_Entry cb);
  30. Sass_Function_Fn sass_function_get_function (Sass_Function_Entry cb);
  31. void* sass_function_get_cookie (Sass_Function_Entry cb);
  32.  
  33. // Getters pour l'entrée de l'appelé
  34. const char* sass_callee_get_name (Sass_Callee_Entry);
  35. const char* sass_callee_get_path (Sass_Callee_Entry);
  36. size_t sass_callee_get_line (Sass_Callee_Entry);
  37. size_t sass_callee_get_column (Sass_Callee_Entry);
  38. enum Sass_Callee_Type sass_callee_get_type (Sass_Callee_Entry);
  39. Sass_Env_Frame sass_callee_get_env (Sass_Callee_Entry);
  40.  
  41. // Getters et Setters pour les environnements (lexicaux, locaux et globaux)
  42. union Sass_Value* sass_env_get_lexical (Sass_Env_Frame, const char*);
  43. void sass_env_set_lexical (Sass_Env_Frame, const char*, union Sass_Value*);
  44. union Sass_Value* sass_env_get_local (Sass_Env_Frame, const char*);
  45. void sass_env_set_local (Sass_Env_Frame, const char*, union Sass_Value*);
  46. union Sass_Value* sass_env_get_global (Sass_Env_Frame, const char*);
  47. void sass_env_set_global (Sass_Env_Frame, const char*, union Sass_Value*);

Autres liens



Dernière mise à jour : Mardi, le 8 octobre 2024