diff options
author | Sébastien Helleu <flashcode@flashtux.org> | 2014-10-22 21:19:54 +0200 |
---|---|---|
committer | Sébastien Helleu <flashcode@flashtux.org> | 2014-10-22 21:19:54 +0200 |
commit | 633a32ccd367bdb7e2f97066a4d35f01ecb8e8fb (patch) | |
tree | 91aaf5a1df48078fb98b747c8bf3deccaecbdaed /doc/fr | |
parent | 972bd26e5e2e2e2303ccff457ae0493e2f45a284 (diff) | |
download | weechat-633a32ccd367bdb7e2f97066a4d35f01ecb8e8fb.zip |
api: add regex replace feature in function string_eval_expression
Diffstat (limited to 'doc/fr')
-rw-r--r-- | doc/fr/weechat_plugin_api.fr.asciidoc | 154 |
1 files changed, 136 insertions, 18 deletions
diff --git a/doc/fr/weechat_plugin_api.fr.asciidoc b/doc/fr/weechat_plugin_api.fr.asciidoc index 17c8c7799..4102bb62f 100644 --- a/doc/fr/weechat_plugin_api.fr.asciidoc +++ b/doc/fr/weechat_plugin_api.fr.asciidoc @@ -1858,11 +1858,11 @@ str3 = weechat.string_input_for_buffer("//test") # "/test" ==== weechat_string_eval_expression -_WeeChat ≥ 0.4.0, mis à jour dans la 0.4.2._ +_WeeChat ≥ 0.4.0, mis à jour dans la 0.4.2 et 1.1._ Évaluer l'expression et retourner le résultat sous forme de chaîne. -Les variables spéciales avec le format `${variable}` sont étendues (voir la -commande `/eval` dans le 'Guide utilisateur WeeChat'). +Les variables spéciales avec le format `${variable}` sont étendues (voir le +tableau ci-dessous). [NOTE] Depuis la version 1.0, les variables imbriquées sont supportées, par exemple : @@ -1880,11 +1880,17 @@ char *weechat_string_eval_expression (const char *expr, Paramètres : -* 'expr' : l'expression à évaluer +* 'expr' : l'expression à évaluer (voir le tableau ci-dessous) * 'pointers' : table de hachage avec les pointeurs (les clés doivent être des chaînes, les valeurs doivent être des pointeurs); les pointeurs "window" et "buffer" sont automatiquement ajoutés s'ils ne sont pas dans la table de - hachage (avec le pointer vers fenêtre/tampon courants) (peut être NULL) + hachage (avec le pointer vers fenêtre/tampon courants) (peut être NULL) : +** 'regex' : pointeur vers une expression régulière (structure 'regex_t') + compilée avec la fonction WeeChat + <<_weechat_string_regcomp,weechat_string_regcomp>> ou regcomp (voir + `man regcomp`) ; cette option est similaire à 'regex' dans la table de + hachage 'options' (ci-dessous), mais est utilisée pour de meilleures + performances * 'extra_vars' : variables additionnelles qui seront étendues (peut être NULL) * 'options' : table de hachage avec des options (les clés et valeurs doivent être des chaînes) (peut être NULL) : @@ -1894,6 +1900,12 @@ Paramètres : et parenthèses sont utilisés, le résultat est un booléen ("0" ou "1") ** 'prefix' : préfixe avant les variables à remplacer (par défaut : "${") ** 'suffix' : suffixe après les variables à remplacer (par défaut : "}") +** 'regex' : une expression regulière pour remplacer du texte dans 'expr' (qui + n'est alors pas évalué) +** 'regex_replace' : le texte de remplacement à utiliser avec 'regex', pour + remplacer du texte dans 'expr' ('regex_replace' est évalué sur chaque + correspondance de 'regex' sur 'expr', jusqu'à ce que plus aucune + correspondance ne soit trouvée) Valeur de retour : @@ -1901,20 +1913,108 @@ Valeur de retour : utilisation), ou NULL si problème (expression invalide ou pas assez de mémoire) +Liste des variables étendues dans l'expression (par ordre de priorité, de la +première étendue à la dernière) : + +[width="100%",cols="2,8,3,3",options="header"] +|=== +| Format | Description | Exemples | Résultats + +| `${nom}` | Variable `nom` de la table de hachage 'extra_vars' | + `${nom}` | `valeur` + +| `${esc:xxx}` + + `${\xxx}` | Chaîne avec caractères échappés | + `${esc:préfixe\tmessage}` + + `${\ua9}` | + `préfixe<TAB>message` + + `©` + +| `${hide:x,valeur}` | + Chaîne avec les caractères masqués (tous les caractères dans `valeur` + remplacés par `x` | + `${hide:*,mot_de_passe}` | + `************` + +| `${re:N}` | + Groupe regex capturé : 0 = toute la chaîne correspondante, 1 à 99 = groupe + capturé, `+` = dernier groupe capturé | + `${re:1}` | + `test` + +| `${color:nom}` | + Code couleur WeeChat (le nom de couleur a des attributs facultatifs) | + `${color:red}texte rouge` + + `${color:*214}texte orange gras` | + `texte rouge` (en rouge) + + `texte orange gras` (en orange gras) + +| `${info:name}` + + `${indo:name,arguments}` | + Info de WeeChat ou d'une extension, voir la fonction + <<_weechat_info_get,weechat_info_get>> | + `${info:version}` + + `${info:irc_nick_color_name,foo}` | + `1.0` + + `lightblue` + +| `${sec.data.nom}` | + Valeur de la donnée sécurisée `nom` | + `${sec.data.freenode_pass}` | + `mon_mot_de_passe` + +| `${file.section.option}` | + Valeur de l'option | + `${weechat.look.buffer_time_format}` | + `%H:%M:%S` + +| `${nom}` | + Valeur de la variable locale `nom` dans le tampon | + `${nick}` | + `FlashCode` + +| `${hdata.var1.var2...}` + + `${hdata[list].var1.var2...}` | + Valeur d'un hdata (les pointeurs `window` et `buffer` sont définis par défaut + avec la fenêtre et tampon courants) | + `${buffer[gui_buffers].full_name}` + + `${window.buffer.number}` | + `core.weechat` + + `1` +|=== + Exemples en C : [source,C] ---- -struct t_hashtable *options = weechat_hashtable_new (8, - WEECHAT_HASHTABLE_STRING, - WEECHAT_HASHTABLE_STRING, - NULL, - NULL); -if (options) - weechat_hashtable_set (options, "type", "condition"); -char *str1 = weechat_string_eval_expression ("${buffer.full_name}", NULL, NULL, NULL); /* "core.weechat" */ -char *str2 = weechat_string_eval_expression ("${window.win_width} > 100", NULL, NULL, options); /* "1" */ -char *str3 = weechat_string_eval_expression ("abc =~ def", NULL, NULL, options); /* "0" */ +/* conditions */ +struct t_hashtable *options1 = weechat_hashtable_new (8, + WEECHAT_HASHTABLE_STRING, + WEECHAT_HASHTABLE_STRING, + NULL, + NULL); +weechat_hashtable_set (options1, "type", "condition"); +char *str1 = weechat_string_eval_expression ("${window.win_width} > 100", NULL, NULL, options1); /* "1" */ +char *str2 = weechat_string_eval_expression ("abc =~ def", NULL, NULL, options1); /* "0" */ + +/* expression simple */ +char *str3 = weechat_string_eval_expression ("${buffer.full_name}", NULL, NULL, NULL); /* "core.weechat" */ + +/* remplacement avec regex */ +struct t_hashtable *options2 = weechat_hashtable_new (8, + WEECHAT_HASHTABLE_STRING, + WEECHAT_HASHTABLE_STRING, + NULL, + NULL); +/* ajout de crochets autour des URLs */ +weechat_hashtable_set (options2, "regex", "\\w+://\\S+"); +weechat_hashtable_set (options2, "regex_replace", "[ ${re:0} ]"); +char *str4 = weechat_string_eval_expression ("test: http://weechat.org", NULL, NULL, NULL); /* "test: [ http://weechat.org ]" */ + +/* masquage des mots de passe */ +weechat_hashtable_set (options2, "regex", "(password=)(\\S+)"); +weechat_hashtable_set (options2, "regex_replace", "${re:1}${hide:*,${re:2}}"); +char *str5 = weechat_string_eval_expression ("password=abc password=def", NULL, NULL, NULL); /* "password=*** password=***" */ ---- Script (Python) : @@ -1925,9 +2025,27 @@ Script (Python) : str = weechat.string_eval_expression(expr, pointers, extra_vars, options) # exemples -str1 = weechat.string_eval_expression("${buffer.full_name}", {}, {}, {}) # "core.weechat" -str2 = weechat.string_eval_expression("${window.win_width} > 100", {}, {}, {"type": "condition"}) # "1" -str3 = weechat.string_eval_expression("abc =~ def", {}, {}, {"type": "condition"}) # "0" + +# conditions +str1 = weechat.string_eval_expression("${window.win_width} > 100", {}, {}, {"type": "condition"}) # "1" +str2 = weechat.string_eval_expression("abc =~ def", {}, {}, {"type": "condition"}) # "0" + +# expression simple +str3 = weechat.string_eval_expression("${buffer.full_name}", {}, {}, {}) # "core.weechat" + +# remplacement avec regex : ajout de crochets autour des URLs +options = { + "regex": "\\w+://\\S+", + "regex_replace": "[ ${re:0} ]", +} +str4 = weechat.string_eval_expression("test: http://weechat.org", {}, {}, options) # "test: [ http://weechat.org ]" + +# replace with regex : masquage des mots de passe +options = { + "regex": "(password=)(\\S+)", + "regex_replace": "${re:1}${hide:*,${re:2}}", +} +str5 = weechat.string_eval_expression("password=abc password=def", {}, {}, options) # "password=*** password=***" ---- [[utf-8]] |