From a93e598c358574fcc20b5e8ed34b19cc773f143d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Helleu?= Date: Fri, 5 Feb 2021 20:07:16 +0100 Subject: [PATCH] core: add raw string in evaluation of expressions with "raw:xxx" (closes #1611) --- ChangeLog.adoc | 1 + doc/de/includes/autogen_user_commands.de.adoc | 150 +++++++++--------- doc/en/includes/autogen_user_commands.en.adoc | 40 ++--- doc/en/weechat_plugin_api.en.adoc | 6 + doc/fr/includes/autogen_user_commands.fr.adoc | 40 ++--- doc/fr/weechat_plugin_api.fr.adoc | 6 + doc/it/includes/autogen_user_commands.it.adoc | 40 ++--- doc/it/weechat_plugin_api.it.adoc | 7 + doc/ja/includes/autogen_user_commands.ja.adoc | 40 ++--- doc/ja/weechat_plugin_api.ja.adoc | 7 + doc/pl/includes/autogen_user_commands.pl.adoc | 130 +++++++-------- po/cs.po | 42 ++--- po/de.po | 43 ++--- po/es.po | 42 ++--- po/fr.po | 84 +++++----- po/hu.po | 42 ++--- po/it.po | 42 ++--- po/ja.po | 42 ++--- po/pl.po | 43 ++--- po/pt.po | 42 ++--- po/pt_BR.po | 42 ++--- po/ru.po | 42 ++--- po/tr.po | 42 ++--- po/weechat.pot | 42 ++--- src/core/wee-command.c | 40 ++--- src/core/wee-eval.c | 96 ++++++----- tests/unit/core/test-core-eval.cpp | 6 + 27 files changed, 643 insertions(+), 556 deletions(-) diff --git a/ChangeLog.adoc b/ChangeLog.adoc index e4e851f11..fb194f720 100644 --- a/ChangeLog.adoc +++ b/ChangeLog.adoc @@ -24,6 +24,7 @@ New features:: * core: add options "setvar" and "delvar" in command /buffer, rename option "localvar" to "listvar" * core: add buffer local variable "completion_default_template" (evaluated) to override the value of option "weechat.completion.default_template" (issue #1600) * core: add option "recreate" in command /filter + * core: add raw string in evaluation of expressions with "raw:xxx" (issue #1611) * core: add evaluation of conditions in evaluation of expressions with "eval_cond:" (issue #1582) * irc: add info "irc_is_message_ignored" * irc: add server option "default_chantypes", used when the server does not send them in message 005 (issue #1610) diff --git a/doc/de/includes/autogen_user_commands.de.adoc b/doc/de/includes/autogen_user_commands.de.adoc index 53b78e2ab..64320b43e 100644 --- a/doc/de/includes/autogen_user_commands.de.adoc +++ b/doc/de/includes/autogen_user_commands.de.adoc @@ -1304,78 +1304,80 @@ infolists: zeigt Information über die Infolists an /eval [-n|-s] [-d] [-n] [-d [-d]] -c - -n: gibt das Ergebnis aus, ohne dass dieses in den Buffer gesendet wird (debug Modus) - -s: teilt Ausdrücke, bevor sie evaluiert werden (mehrere Befehle können durch Semikolon getrennt werden) - -d: eine Debug-Ausgabe nach Auswertung anzeigen (Nutzung von zwei -d: ausführliche Debug-Ausgabe) - -c: Auswertung als Bedingung: nutzt Operatoren und runde Klammern, Rückgabewert als Boolean-Wert ("0" oder "1") -expression: Ausdruck welcher verarbeitet werden soll. Variablen im Format ${variable} werden ersetzt (siehe unten); mehrere Befehle werden durch ein Semikolon voneinander getrennt - operator: ein logischer oder vergleichender Operand: - - logische Operanden: - && boolean "und" - || boolean "oder" - - vergleichende Operanden: - == gleich - != ungleich - <= kleiner oder gleich - < kleiner - >= größer oder gleich - > größer - =~ stimmt mit regulärem POSIX Ausdruck überein - !~ stimmt NICHT mit regulärem POSIX Ausdruck überein - ==* stimmt mit Maske überein (Platzhalter "*" ist erlaubt) - !!* stimmt mit Maske NICHT überein (Platzhalter "*" ist erlaubt) - =* stimmt mit Maske überein, Groß- und Kleinschreibung wird nicht beachtet (Platzhalter "*" ist erlaubt) - !* stimmt mit Maske NICHT überein, Groß- und Kleinschreibung wird nicht beachtet (Platzhalter "*" ist erlaubt) - ==- ist enthalten, Groß- und Kleinschreibung wird beachtet - !!- ist NICHT enthalten, Groß- und Kleinschreibung wird beachtet - =- ist enthalten, Groß- und Kleinschreibung wird nicht beachtet - !- ist NICHT enthalten, Groß- und Kleinschreibung wird nicht beachtet + -n: display result without sending it to buffer (debug mode) + -s: split expression before evaluating it (many commands can be separated by semicolons) + -d: display debug output after evaluation (with two -d: more verbose debug) + -c: evaluate as condition: use operators and parentheses, return a boolean value ("0" or "1") +expression: expression to evaluate, variables with format ${variable} are replaced (see below); many commands can be separated by semicolons + operator: a logical or comparison operator: + - logical operators: + && boolean "and" + || boolean "or" + - comparison operators: + == equal + != not equal + <= less or equal + < less + >= greater or equal + > greater + =~ is matching POSIX extended regex + !~ is NOT matching POSIX extended regex + ==* is matching mask, case sensitive (wildcard "*" is allowed) + !!* is NOT matching mask, case sensitive (wildcard "*" is allowed) + =* is matching mask, case insensitive (wildcard "*" is allowed) + !* is NOT matching mask, case insensitive (wildcard "*" is allowed) + ==- is included, case sensitive + !!- is NOT included, case sensitive + =- is included, case insensitive + !- is NOT included, case insensitive -Ein Ausdruck gilt als "wahr" sofern das Ergebnis weder NULL, nicht leer und von "0" abweichend ist. -Für einen Vergleich werden Fließkommazahlen genutzt, insofern es sich bei beiden Ausdrücken um gültige Zahlen handelt, folgende Formate werden unterstützt: - - Integer (Beispiele: 5, -7) - - Fließkommazahl (Beispiele: 5.2, -7.5, 2.83e-2) - - hexadezimale Zahl (Beispiele: 0xA3, -0xA3) -Um einen Vergleich zwischen zwei Zeichenketten zu erzwingen, müssen die Ausdrücke in Anführungszeichen gesetzt werden, zum Beispiel: +An expression is considered as "true" if it is not NULL, not empty, and different from "0". +The comparison is made using floating point numbers if the two expressions are valid numbers, with one of the following formats: + - integer (examples: 5, -7) + - floating point number (examples: 5.2, -7.5, 2.83e-2) + - hexadecimal number (examples: 0xA3, -0xA3) +To force a string comparison, you can add double quotes around each expression, for example: 50 > 100 ==> 0 "50" > "100" ==> 1 -Einige Variablen werden im Ausdruck mittels der Formatierung ${variable} ersetzt. Mögliche Variablen sind, nach Reihenfolge ihrer Priorität: - 1. eine evaluierte Teilzeichenkette (Format: "eval:xxx") - 2. eine evaluierte Bedingung (Format: "eval_cond:xxx") - 3. eine Zeichenkette mit Escapesequenzen (Format: "esc:xxx" oder "\xxx") - 4. Zeichen, die in einer Zeichenkette nicht dargestellt werden sollen (Format: "hide:Zeichen,Zeichenkette") - 5. eine Zeichenkette mit einer maximalen Anzahl an Zeichen (Format: "cut:+Max,Suffix,Zeichenkette") - oder maximale Anzahl an Zeichen die auf dem Bildschirm angezeigt werden sollen (Format: "cutscr:Max,Suffix,Zeichenkette oder "cutscr:+Max,Suffix,Zeichenkette") - 6. eine Zeichenkette umkehren (Format: "rev:xxx" oder "revscr:xxx") - 7. eine Zeichenkette wiederholen (Format: "repeat:Anzahl,Zeichenkette") - 8. Länge einer Zeichenkette (Format: "length:xxx" oder "lengthscr:xxx") - 9. eine Farbe (Format: "color:xxx", siehe "Anleitung für API Erweiterung", Funktion "color") - 10. ein Modifizierer (Format: "info:Name,Argumente", Argumente sind optional) - 11. eine Info (Format: "Info:Name,Argumente", Argumente sind optional) - 12. eine Basis 16/32/64 kodierte / dekodierte Zeichenfolge (Format: "base_encode:base,xxx" oder "base_decode:base,xxx") - 13. aktuelles Datum/Uhrzeit (Format: "date" oder "date:format") - 14. eine Umgebungsvariable (Format: "env:XXX") - 15. ein Dreifachoperand (Format: "if:Bedingung?Wert_falls_wahr:Wert_falls_unwahr") - 16. Ergebnis eines Ausdrucks mit Klammern und Operatoren + - * / // % ** (Format: "calc:xxx") - 17. eine Option (Format: "file.section.option") - 18. eine lokale Variable eines Buffers - 19. ein(e) hdata - Name/Variable (der Wert wird automatisch in eine Zeichenkette konvertiert), standardmäßig wird für "window" und "buffer" das aktuelle Fenster/Buffer verwendet. -Das Format für hdata kann wie folgt aufgebaut sein: - hdata.var1.var2...: startet mit hdata (der Pointer muss bekannt sein) und fragt eine Variable nach der anderen ab (weitere hdata können folgen) - hdata[list].var1.var2...: startet hdata mittels einer Liste, zum Beispiel: - ${buffer[gui_buffers].full_name}: der vollständige Name des ersten Buffers, in der verknüpften Liste aller Buffer - ${plugin[weechat_plugins].name}: Name der ersten Erweiterung, in der verknüpften Liste aller Erweiterungen - hdata[pointer].var1.var2...: startet hdata mittels einem Pointer, zum Beispiel: - ${buffer[0x1234abcd].full_name}: vollständiger Name eines Buffers und des dazugehörigen Pointers (kann in triggern benutzt werden) -Die vorhandenen Namen für hdata und Variablen sind in der "Anleitung für API Erweiterung", Bereich "weechat_hdata_get". beschrieben +Some variables are replaced in expression, using the format ${variable}, variable can be, by order of priority: + 1. the string itself without evaluation (format: "raw:xxx") + 2. an evaluated sub-string (format: "eval:xxx") + 3. an evaluated condition (format: "eval_cond:xxx") + 4. a string with escaped chars (format: "esc:xxx" or "\xxx") + 5. a string with chars to hide (format: "hide:char,string") + 6. a string with max chars (format: "cut:max,suffix,string" or "cut:+max,suffix,string") + or max chars displayed on screen (format: "cutscr:max,suffix,string" or "cutscr:+max,suffix,string") + 7. a reversed string (format: "rev:xxx" or "revscr:xxx") + 8. a repeated string (format: "repeat:count,string") + 9. length of a string (format: "length:xxx" or "lengthscr:xxx") + 10. a color (format: "color:xxx", see "Plugin API reference", function "color") + 11. a modifier (format: "modifier:name,data,string") + 12. an info (format: "info:name,arguments", arguments are optional) + 13. a base 16/32/64 encoded/decoded string (format: "base_encode:base,xxx" or "base_decode:base,xxx") + 14. current date/time (format: "date" or "date:format") + 15. an environment variable (format: "env:XXX") + 16. a ternary operator (format: "if:condition?value_if_true:value_if_false") + 17. result of an expression with parentheses and operators + - * / // % ** (format: "calc:xxx") + 18. an option (format: "file.section.option") + 19. a local variable in buffer + 20. a hdata name/variable (the value is automatically converted to string), by default "window" and "buffer" point to current window/buffer. +Format for hdata can be one of following: + hdata.var1.var2...: start with a hdata (pointer must be known), and ask variables one after one (other hdata can be followed) + hdata[list].var1.var2...: start with a hdata using a list, for example: + ${buffer[gui_buffers].full_name}: full name of first buffer in linked list of buffers + ${plugin[weechat_plugins].name}: name of first plugin in linked list of plugins + hdata[pointer].var1.var2...: start with a hdata using a pointer, for example: + ${buffer[0x1234abcd].full_name}: full name of the buffer with this pointer (can be used in triggers) +For name of hdata and variables, please look at "Plugin API reference", function "weechat_hdata_get". -Beispiele (einfache Zeichenketten): +Examples (simple strings): + /eval -n ${raw:${info:version}} ==> ${info:version} /eval -n ${eval_cond:${window.win_width}>100} ==> 1 /eval -n ${info:version} ==> 0.4.3 /eval -n ${env:HOME} ==> /home/user /eval -n ${weechat.look.scroll_amount} ==> 3 - /eval -n ${sec.data.freenode_password} ==> geheim + /eval -n ${sec.data.freenode_password} ==> secret /eval -n ${window} ==> 0x2549aa0 /eval -n ${window.buffer} ==> 0x2549320 /eval -n ${window.buffer.full_name} ==> core.weechat @@ -1393,17 +1395,17 @@ Beispiele (einfache Zeichenketten): /eval -n ${base_encode:64,test} ==> dGVzdA== /eval -n ${base_decode:64,dGVzdA==} ==> test -Beispiele (Bedingungen): - /eval -n -c ${window.buffer.number} > 2 ==> 0 - /eval -n -c ${window.win_width} > 100 ==> 1 - /eval -n -c (8 > 12) || (5 > 2) ==> 1 - /eval -n -c (8 > 12) && (5 > 2) ==> 0 - /eval -n -c abcd =~ ^ABC ==> 1 - /eval -n -c abcd =~ (?-i)^ABC ==> 0 - /eval -n -c abcd =~ (?-i)^abc ==> 1 - /eval -n -c abcd !~ abc ==> 0 - /eval -n -c abcd =* a*d ==> 1 - /eval -n -c abcd =- bc ==> 1 +Examples (conditions): + /eval -n -c ${window.buffer.number} > 2 ==> 0 + /eval -n -c ${window.win_width} > 100 ==> 1 + /eval -n -c (8 > 12) || (5 > 2) ==> 1 + /eval -n -c (8 > 12) && (5 > 2) ==> 0 + /eval -n -c abcd =~ ^ABC ==> 1 + /eval -n -c abcd =~ (?-i)^ABC ==> 0 + /eval -n -c abcd =~ (?-i)^abc ==> 1 + /eval -n -c abcd !~ abc ==> 0 + /eval -n -c abcd =* a*d ==> 1 + /eval -n -c abcd =- bc ==> 1 ---- [[command_weechat_filter]] diff --git a/doc/en/includes/autogen_user_commands.en.adoc b/doc/en/includes/autogen_user_commands.en.adoc index 43add3fa5..ffcb3199d 100644 --- a/doc/en/includes/autogen_user_commands.en.adoc +++ b/doc/en/includes/autogen_user_commands.en.adoc @@ -1341,26 +1341,27 @@ To force a string comparison, you can add double quotes around each expression, "50" > "100" ==> 1 Some variables are replaced in expression, using the format ${variable}, variable can be, by order of priority: - 1. an evaluated sub-string (format: "eval:xxx") - 2. an evaluated condition (format: "eval_cond:xxx") - 3. a string with escaped chars (format: "esc:xxx" or "\xxx") - 4. a string with chars to hide (format: "hide:char,string") - 5. a string with max chars (format: "cut:max,suffix,string" or "cut:+max,suffix,string") + 1. the string itself without evaluation (format: "raw:xxx") + 2. an evaluated sub-string (format: "eval:xxx") + 3. an evaluated condition (format: "eval_cond:xxx") + 4. a string with escaped chars (format: "esc:xxx" or "\xxx") + 5. a string with chars to hide (format: "hide:char,string") + 6. a string with max chars (format: "cut:max,suffix,string" or "cut:+max,suffix,string") or max chars displayed on screen (format: "cutscr:max,suffix,string" or "cutscr:+max,suffix,string") - 6. a reversed string (format: "rev:xxx" or "revscr:xxx") - 7. a repeated string (format: "repeat:count,string") - 8. length of a string (format: "length:xxx" or "lengthscr:xxx") - 9. a color (format: "color:xxx", see "Plugin API reference", function "color") - 10. a modifier (format: "modifier:name,data,string") - 11. an info (format: "info:name,arguments", arguments are optional) - 12. a base 16/32/64 encoded/decoded string (format: "base_encode:base,xxx" or "base_decode:base,xxx") - 13. current date/time (format: "date" or "date:format") - 14. an environment variable (format: "env:XXX") - 15. a ternary operator (format: "if:condition?value_if_true:value_if_false") - 16. result of an expression with parentheses and operators + - * / // % ** (format: "calc:xxx") - 17. an option (format: "file.section.option") - 18. a local variable in buffer - 19. a hdata name/variable (the value is automatically converted to string), by default "window" and "buffer" point to current window/buffer. + 7. a reversed string (format: "rev:xxx" or "revscr:xxx") + 8. a repeated string (format: "repeat:count,string") + 9. length of a string (format: "length:xxx" or "lengthscr:xxx") + 10. a color (format: "color:xxx", see "Plugin API reference", function "color") + 11. a modifier (format: "modifier:name,data,string") + 12. an info (format: "info:name,arguments", arguments are optional) + 13. a base 16/32/64 encoded/decoded string (format: "base_encode:base,xxx" or "base_decode:base,xxx") + 14. current date/time (format: "date" or "date:format") + 15. an environment variable (format: "env:XXX") + 16. a ternary operator (format: "if:condition?value_if_true:value_if_false") + 17. result of an expression with parentheses and operators + - * / // % ** (format: "calc:xxx") + 18. an option (format: "file.section.option") + 19. a local variable in buffer + 20. a hdata name/variable (the value is automatically converted to string), by default "window" and "buffer" point to current window/buffer. Format for hdata can be one of following: hdata.var1.var2...: start with a hdata (pointer must be known), and ask variables one after one (other hdata can be followed) hdata[list].var1.var2...: start with a hdata using a list, for example: @@ -1371,6 +1372,7 @@ Format for hdata can be one of following: For name of hdata and variables, please look at "Plugin API reference", function "weechat_hdata_get". Examples (simple strings): + /eval -n ${raw:${info:version}} ==> ${info:version} /eval -n ${eval_cond:${window.win_width}>100} ==> 1 /eval -n ${info:version} ==> 0.4.3 /eval -n ${env:HOME} ==> /home/user diff --git a/doc/en/weechat_plugin_api.en.adoc b/doc/en/weechat_plugin_api.en.adoc index b81440b2b..f5233c511 100644 --- a/doc/en/weechat_plugin_api.en.adoc +++ b/doc/en/weechat_plugin_api.en.adoc @@ -2524,6 +2524,12 @@ expanded to last): |=== | Format | Description | Examples | Results +| `+${raw:xxx}+` + + _(WeeChat ≥ 3.1)_ | + Raw string (not evaluated). | + `+${raw:${info:version}}+` | + `+${info:version}+` + | `+${name}+` | Variable `name` from hashtable _extra_vars_. | `+${name}+` | diff --git a/doc/fr/includes/autogen_user_commands.fr.adoc b/doc/fr/includes/autogen_user_commands.fr.adoc index 970aee5f3..08876550b 100644 --- a/doc/fr/includes/autogen_user_commands.fr.adoc +++ b/doc/fr/includes/autogen_user_commands.fr.adoc @@ -1341,26 +1341,27 @@ Pour forcer une comparaison de chaînes, vous pouvez ajouter des guillemets auto "50" > "100" ==> 1 Des variables sont remplacées dans l'expression, en utilisant le format ${variable}, la variable pouvant être, par ordre de priorité : - 1. une sous-chaîne évaluée (format : "eval:xxx") - 2. une condition évaluée (format : "eval_cond:xxx") - 3. une chaîne avec les caractères échappés (format : "esc:xxx" ou "\xxx") - 4. une chaîne avec des caractères à cacher (format : "hide:caractère,chaîne") - 5. une chaîne avec un maximum de caractères (format : "cut:max,suffixe,chaîne" ou "cut:+max,suffixe,chaîne") + 1. la chaîne elle-même sans évaluation (format : "raw:xxx") + 2. une sous-chaîne évaluée (format : "eval:xxx") + 3. une condition évaluée (format : "eval_cond:xxx") + 4. une chaîne avec les caractères échappés (format : "esc:xxx" ou "\xxx") + 5. une chaîne avec des caractères à cacher (format : "hide:caractère,chaîne") + 6. une chaîne avec un maximum de caractères (format : "cut:max,suffixe,chaîne" ou "cut:+max,suffixe,chaîne") ou un maximum de caractères affichés à l'écran (format : "cutscr:max,suffixe,chaîne" ou "cutscr:+max,suffixe,chaîne") - 6. une chaîne inversée (format : "rev:xxx" ou "revscr:xxx") - 7. une chaîne répétée (format : "repeat:nombre,chaîne") - 8. longueur d'une chaîne (format : "length:xxx" ou "lengthscr:xxx") - 9. une couleur (format : "color:xxx", voir la "Référence API extension", fonction "color") - 10. un modificateur (format : "modifier:nom,données,chaîne") - 11. une info (format : "info:nom,paramètres", les paramètres sont optionnels) - 12. une chaîne encodée/decodée en base 16, 32 ou 64 (format : "base_encode:base,xxx" ou "base_decode:base,xxx") - 13. la date/heure courante (format : "date" ou "date:format") - 14. une variable d'environnement (format : "env:XXX") - 15. un opérateur ternaire (format : "if:condition?valeur_si_vrai:valeur_si_faux") - 16. le résultat d'une expression avec parenthèses et les opérateurs + - * / // % ** (format: "calc:xxx") - 17. une option (format : "fichier.section.option") - 18. une variable locale du tampon - 19. un hdata/variable (la valeur est automatiquement convertie en chaîne), par défaut "window" et "buffer" pointent vers la fenêtre et le tampon courants. + 7. une chaîne inversée (format : "rev:xxx" ou "revscr:xxx") + 8. une chaîne répétée (format : "repeat:nombre,chaîne") + 9. longueur d'une chaîne (format : "length:xxx" ou "lengthscr:xxx") + 10. une couleur (format : "color:xxx", voir la "Référence API extension", fonction "color") + 11. un modificateur (format : "modifier:nom,données,chaîne") + 12. une info (format : "info:nom,paramètres", les paramètres sont optionnels) + 13. une chaîne encodée/decodée en base 16, 32 ou 64 (format : "base_encode:base,xxx" ou "base_decode:base,xxx") + 14. la date/heure courante (format : "date" ou "date:format") + 15. une variable d'environnement (format : "env:XXX") + 16. un opérateur ternaire (format : "if:condition?valeur_si_vrai:valeur_si_faux") + 17. le résultat d'une expression avec parenthèses et les opérateurs + - * / // % ** (format: "calc:xxx") + 18. une option (format : "fichier.section.option") + 19. une variable locale du tampon + 20. un hdata/variable (la valeur est automatiquement convertie en chaîne), par défaut "window" et "buffer" pointent vers la fenêtre et le tampon courants. Le format du hdata peut être le suivant : hdata.var1.var2... : démarrer avec un hdata (le pointeur doit être connu), et demander les variables l'une après l'autre (d'autres hdata peuvent être suivis) hdata[liste].var1.var2... : démarrer avec un hdata en utilisant une liste, par exemple : @@ -1371,6 +1372,7 @@ Le format du hdata peut être le suivant : Pour le nom du hdata et des variables, voir la "Référence API extension", fonction "weechat_hdata_get". Exemples (chaînes simples) : + /eval -n ${raw:${info:version}} ==> ${info:version} /eval -n ${eval_cond:${window.win_width}>100} ==> 1 /eval -n ${info:version} ==> 0.4.3 /eval -n ${env:HOME} ==> /home/user diff --git a/doc/fr/weechat_plugin_api.fr.adoc b/doc/fr/weechat_plugin_api.fr.adoc index 9aa26db39..d9a670c4e 100644 --- a/doc/fr/weechat_plugin_api.fr.adoc +++ b/doc/fr/weechat_plugin_api.fr.adoc @@ -2567,6 +2567,12 @@ première étendue à la dernière) : |=== | Format | Description | Exemples | Résultats +| `+${raw:xxx}+` + + _(WeeChat ≥ 3.1)_ | + Chaîne brute (non évaluée). | + `+${raw:${info:version}}+` | + `+${info:version}+` + | `+${nom}+` | Variable `nom` de la table de hachage _extra_vars_. | `+${nom}+` | diff --git a/doc/it/includes/autogen_user_commands.it.adoc b/doc/it/includes/autogen_user_commands.it.adoc index d613e8c41..96a42df00 100644 --- a/doc/it/includes/autogen_user_commands.it.adoc +++ b/doc/it/includes/autogen_user_commands.it.adoc @@ -1341,26 +1341,27 @@ To force a string comparison, you can add double quotes around each expression, "50" > "100" ==> 1 Some variables are replaced in expression, using the format ${variable}, variable can be, by order of priority: - 1. an evaluated sub-string (format: "eval:xxx") - 2. an evaluated condition (format: "eval_cond:xxx") - 3. a string with escaped chars (format: "esc:xxx" or "\xxx") - 4. a string with chars to hide (format: "hide:char,string") - 5. a string with max chars (format: "cut:max,suffix,string" or "cut:+max,suffix,string") + 1. the string itself without evaluation (format: "raw:xxx") + 2. an evaluated sub-string (format: "eval:xxx") + 3. an evaluated condition (format: "eval_cond:xxx") + 4. a string with escaped chars (format: "esc:xxx" or "\xxx") + 5. a string with chars to hide (format: "hide:char,string") + 6. a string with max chars (format: "cut:max,suffix,string" or "cut:+max,suffix,string") or max chars displayed on screen (format: "cutscr:max,suffix,string" or "cutscr:+max,suffix,string") - 6. a reversed string (format: "rev:xxx" or "revscr:xxx") - 7. a repeated string (format: "repeat:count,string") - 8. length of a string (format: "length:xxx" or "lengthscr:xxx") - 9. a color (format: "color:xxx", see "Plugin API reference", function "color") - 10. a modifier (format: "modifier:name,data,string") - 11. an info (format: "info:name,arguments", arguments are optional) - 12. a base 16/32/64 encoded/decoded string (format: "base_encode:base,xxx" or "base_decode:base,xxx") - 13. current date/time (format: "date" or "date:format") - 14. an environment variable (format: "env:XXX") - 15. a ternary operator (format: "if:condition?value_if_true:value_if_false") - 16. result of an expression with parentheses and operators + - * / // % ** (format: "calc:xxx") - 17. an option (format: "file.section.option") - 18. a local variable in buffer - 19. a hdata name/variable (the value is automatically converted to string), by default "window" and "buffer" point to current window/buffer. + 7. a reversed string (format: "rev:xxx" or "revscr:xxx") + 8. a repeated string (format: "repeat:count,string") + 9. length of a string (format: "length:xxx" or "lengthscr:xxx") + 10. a color (format: "color:xxx", see "Plugin API reference", function "color") + 11. a modifier (format: "modifier:name,data,string") + 12. an info (format: "info:name,arguments", arguments are optional) + 13. a base 16/32/64 encoded/decoded string (format: "base_encode:base,xxx" or "base_decode:base,xxx") + 14. current date/time (format: "date" or "date:format") + 15. an environment variable (format: "env:XXX") + 16. a ternary operator (format: "if:condition?value_if_true:value_if_false") + 17. result of an expression with parentheses and operators + - * / // % ** (format: "calc:xxx") + 18. an option (format: "file.section.option") + 19. a local variable in buffer + 20. a hdata name/variable (the value is automatically converted to string), by default "window" and "buffer" point to current window/buffer. Format for hdata can be one of following: hdata.var1.var2...: start with a hdata (pointer must be known), and ask variables one after one (other hdata can be followed) hdata[list].var1.var2...: start with a hdata using a list, for example: @@ -1371,6 +1372,7 @@ Format for hdata can be one of following: For name of hdata and variables, please look at "Plugin API reference", function "weechat_hdata_get". Examples (simple strings): + /eval -n ${raw:${info:version}} ==> ${info:version} /eval -n ${eval_cond:${window.win_width}>100} ==> 1 /eval -n ${info:version} ==> 0.4.3 /eval -n ${env:HOME} ==> /home/user diff --git a/doc/it/weechat_plugin_api.it.adoc b/doc/it/weechat_plugin_api.it.adoc index 029a71557..ddffdc528 100644 --- a/doc/it/weechat_plugin_api.it.adoc +++ b/doc/it/weechat_plugin_api.it.adoc @@ -2636,6 +2636,13 @@ expanded to last): |=== | Format | Description | Examples | Results +// TRANSLATION MISSING +| `+${raw:xxx}+` + + _(WeeChat ≥ 3.1)_ | + Raw string (not evaluated). | + `+${raw:${info:version}}+` | + `+${info:version}+` + | `+${name}+` | Variable `name` from hashtable _extra_vars_. | `+${name}+` | diff --git a/doc/ja/includes/autogen_user_commands.ja.adoc b/doc/ja/includes/autogen_user_commands.ja.adoc index c16ca8d8e..7ed6214bf 100644 --- a/doc/ja/includes/autogen_user_commands.ja.adoc +++ b/doc/ja/includes/autogen_user_commands.ja.adoc @@ -1341,26 +1341,27 @@ To force a string comparison, you can add double quotes around each expression, "50" > "100" ==> 1 Some variables are replaced in expression, using the format ${variable}, variable can be, by order of priority: - 1. an evaluated sub-string (format: "eval:xxx") - 2. an evaluated condition (format: "eval_cond:xxx") - 3. a string with escaped chars (format: "esc:xxx" or "\xxx") - 4. a string with chars to hide (format: "hide:char,string") - 5. a string with max chars (format: "cut:max,suffix,string" or "cut:+max,suffix,string") + 1. the string itself without evaluation (format: "raw:xxx") + 2. an evaluated sub-string (format: "eval:xxx") + 3. an evaluated condition (format: "eval_cond:xxx") + 4. a string with escaped chars (format: "esc:xxx" or "\xxx") + 5. a string with chars to hide (format: "hide:char,string") + 6. a string with max chars (format: "cut:max,suffix,string" or "cut:+max,suffix,string") or max chars displayed on screen (format: "cutscr:max,suffix,string" or "cutscr:+max,suffix,string") - 6. a reversed string (format: "rev:xxx" or "revscr:xxx") - 7. a repeated string (format: "repeat:count,string") - 8. length of a string (format: "length:xxx" or "lengthscr:xxx") - 9. a color (format: "color:xxx", see "Plugin API reference", function "color") - 10. a modifier (format: "modifier:name,data,string") - 11. an info (format: "info:name,arguments", arguments are optional) - 12. a base 16/32/64 encoded/decoded string (format: "base_encode:base,xxx" or "base_decode:base,xxx") - 13. current date/time (format: "date" or "date:format") - 14. an environment variable (format: "env:XXX") - 15. a ternary operator (format: "if:condition?value_if_true:value_if_false") - 16. result of an expression with parentheses and operators + - * / // % ** (format: "calc:xxx") - 17. an option (format: "file.section.option") - 18. a local variable in buffer - 19. a hdata name/variable (the value is automatically converted to string), by default "window" and "buffer" point to current window/buffer. + 7. a reversed string (format: "rev:xxx" or "revscr:xxx") + 8. a repeated string (format: "repeat:count,string") + 9. length of a string (format: "length:xxx" or "lengthscr:xxx") + 10. a color (format: "color:xxx", see "Plugin API reference", function "color") + 11. a modifier (format: "modifier:name,data,string") + 12. an info (format: "info:name,arguments", arguments are optional) + 13. a base 16/32/64 encoded/decoded string (format: "base_encode:base,xxx" or "base_decode:base,xxx") + 14. current date/time (format: "date" or "date:format") + 15. an environment variable (format: "env:XXX") + 16. a ternary operator (format: "if:condition?value_if_true:value_if_false") + 17. result of an expression with parentheses and operators + - * / // % ** (format: "calc:xxx") + 18. an option (format: "file.section.option") + 19. a local variable in buffer + 20. a hdata name/variable (the value is automatically converted to string), by default "window" and "buffer" point to current window/buffer. Format for hdata can be one of following: hdata.var1.var2...: start with a hdata (pointer must be known), and ask variables one after one (other hdata can be followed) hdata[list].var1.var2...: start with a hdata using a list, for example: @@ -1371,6 +1372,7 @@ Format for hdata can be one of following: For name of hdata and variables, please look at "Plugin API reference", function "weechat_hdata_get". Examples (simple strings): + /eval -n ${raw:${info:version}} ==> ${info:version} /eval -n ${eval_cond:${window.win_width}>100} ==> 1 /eval -n ${info:version} ==> 0.4.3 /eval -n ${env:HOME} ==> /home/user diff --git a/doc/ja/weechat_plugin_api.ja.adoc b/doc/ja/weechat_plugin_api.ja.adoc index 91d6f886a..f1cab0fa6 100644 --- a/doc/ja/weechat_plugin_api.ja.adoc +++ b/doc/ja/weechat_plugin_api.ja.adoc @@ -2548,6 +2548,13 @@ str5 = weechat.string_eval_expression("password=abc password=def", {}, {}, optio |=== | 書式 | 説明 | 例 | 結果 +// TRANSLATION MISSING +| `+${raw:xxx}+` + + _(WeeChat ≥ 3.1)_ | + Raw string (not evaluated). | + `+${raw:${info:version}}+` | + `+${info:version}+` + | `+${name}+` | _extra_vars_ の変数 `name` の値に展開 | `+${name}+` | diff --git a/doc/pl/includes/autogen_user_commands.pl.adoc b/doc/pl/includes/autogen_user_commands.pl.adoc index 0534df0a4..02f3dd315 100644 --- a/doc/pl/includes/autogen_user_commands.pl.adoc +++ b/doc/pl/includes/autogen_user_commands.pl.adoc @@ -1303,78 +1303,80 @@ infolists: wyświetla informacje o infolistach /eval [-n|-s] [-d] [-n] [-d [-d]] -c - -n: wyświetla wynik bez wysyłania go do buforu (tryb debugowania) - -s: podziel wyrażenie przed przetworzeniem go (wiele komend może być oddzielonych średnikami) - -d: wyświetl wyjście debugowe po ewaluacji - -c: przetwarza jako warunek: użyj operatorów i nawiasów, zwraca wartość logiczną ("0" lub "1") -wyrażenie: wyrażenie do przetworzenia, zmienne o formacie ${zmienna} są zastępowane (zobacz niżej); wiele komend można oddzielić średnikami - operator: operator logiczny lub porównania: - - operatory logiczne: - && logiczne „i” - || logiczne „lub” - - operatory porównania: - == równy - != różny - <= mniejszy lub równy - < mniejszy - >= większy lub równy - > większy - =~ pasuje do rozszerzonego wyrażenia regularnego POSIX - !~ NIE pasuje do rozszerzonego wyrażenia regularnego POSIX - ==* pasuje do maski, rozróżnia wielkość znaków (dzika karta „*” dozwolona) - !!* NIE pasuje do maski, rozróżnia wielkość znaków (dzika karta „*” dozwolona) - =* pasuje do maski, nie rozróżnia wielkość znaków (dzika karta „*” dozwolona) - !* NIE pasuje do maski, nie rozróżnia wielkość znaków (dzika karta „*” dozwolona) - ==- jest zawarte, rozróżnia wielkość znaków - !!- NIE jest zawarte,rozróżnia wielkość znaków - =- jest zawarte, nie rozróżnia wielkość znaków - !- NIE jest zawarte, nie rozróżnia wielkość znaków + -n: display result without sending it to buffer (debug mode) + -s: split expression before evaluating it (many commands can be separated by semicolons) + -d: display debug output after evaluation (with two -d: more verbose debug) + -c: evaluate as condition: use operators and parentheses, return a boolean value ("0" or "1") +expression: expression to evaluate, variables with format ${variable} are replaced (see below); many commands can be separated by semicolons + operator: a logical or comparison operator: + - logical operators: + && boolean "and" + || boolean "or" + - comparison operators: + == equal + != not equal + <= less or equal + < less + >= greater or equal + > greater + =~ is matching POSIX extended regex + !~ is NOT matching POSIX extended regex + ==* is matching mask, case sensitive (wildcard "*" is allowed) + !!* is NOT matching mask, case sensitive (wildcard "*" is allowed) + =* is matching mask, case insensitive (wildcard "*" is allowed) + !* is NOT matching mask, case insensitive (wildcard "*" is allowed) + ==- is included, case sensitive + !!- is NOT included, case sensitive + =- is included, case insensitive + !- is NOT included, case insensitive -Wyrażenie jest uznawane za „prawdziwe” jeśli nie jest NULL, nie jest puste, oraz różni się od „0”. -Porównania dokonuje się z użyciem liczb całkowitych jeśli oba wyrażenia są liczbami całkowitymi, w jednym z następujących formatów: - - liczby całkowite (przykłady: 5, -7) - - liczby zmiennoprzecinkowe (przykłady: 5.2, -7.5, 2.83e-2) - - liczby szesnastkowe (przykłady: 0xA3, -0xA3) -W celu wymuszenia porównywania ciągów, należy umieścić każde wyrażenie w cudzysłowie, na przykład: +An expression is considered as "true" if it is not NULL, not empty, and different from "0". +The comparison is made using floating point numbers if the two expressions are valid numbers, with one of the following formats: + - integer (examples: 5, -7) + - floating point number (examples: 5.2, -7.5, 2.83e-2) + - hexadecimal number (examples: 0xA3, -0xA3) +To force a string comparison, you can add double quotes around each expression, for example: 50 > 100 ==> 0 "50" > "100" ==> 1 -Niektóre zmienne w wyrażeniach są zamieniane, poprzez zastosowanie formatu ${zmienna}, według priorytetu zmienną może być: - 1. przetworzony ciąg (format: "eval:xxx") - 2. przetworzone wyrażenie (format: "eval_cond:xxx") - 3. ciąg z wyescapowanymi znakami (format: "esc:xxx" lub "\xxx") - 4. ciąg ze znakami do ukrycia (format: "hide:char,string") - 5. ciąg o maksymalnej długości (format: "cut:max,suffix,string" lub "cut:+max,suffix,string") - lub maksymalna ilość znaków wyświetlanych na ekranie (format: "cutscr:max,suffix,string" lub "cutscr:+max,suffix,string") - 6. odwrócony ciąg (format: "rev:xxx") - 7. powtórzony ciąg (format: "repeat:ilość,ciąg") - 8. długość ciągu (format: "length:xxx" or "lengthscr:xxx") - 9. kolor (format "color:xxx", zobacz „Opis API wtyczek”, funkcja "color") - 10. modyfikator (format: "modifier:name,data,string") - 11. informacja (format: "info:nazwa,argumenty", argumenty są opcjonalne) - 12. ciąg zakodowany/zdekodowany z base 16/32/64 (format: "base_encode:base,xxx" lub "base_decode:base,xxx") - 13. obecna data/czas (format: "date" lub "date:format") - 14. zmienna środowiskowa (format: "env:XXX") - 15. wyrażenie warunkowe (format: "if:condition?value_if_true:value_if_false") - 16. wynik wyrażenia z nawiasami i operatorami + - * / // % ** (format: "calc:xxx") - 17. opcja (format: plik.sekcja.opcja) - 18 zmienna lokalna w buforze - 19. nazwa hdatay/zmiennej (wartość jest automatycznie konwertowana na ciąg znaków), domyślnie „window” i „buffer” wskazują na aktualne okno/bufor. -Format dla hdata może być jednym z poniższych: - hdata.zmienna1.zmienna2...: inicjuje hdata (wskaźnik musi być znany), następnie wypytuje zmienne jedna po drugiej (inne hdata mogą być następne) - hdata[list].zmienna1.zmienna2...: inicjuje hdata z wykorzystaniem listy, na przykład: - ${buffer[gui_buffers].full_name}: pełna nazwa buforu w połączonej liście buforów - ${plugin[weechat_plugins].name}: nazwa pierwszej wtyczki w połączonej liście wtyczek - hdata[wskaźnik].zmienna1.zmienna2...: zacznij z hdata używając wskaźnika, na przykład: - ${buffer[0x1234abcd].full_name}: pełna nazwa buforu z tym wskaźnikiem (może zostać użyte w triggerach) -Nazwy hdata i zmiennych, można znaleźć w „Opisie API wtyczek”, funkcja "weechat_hdata_get". +Some variables are replaced in expression, using the format ${variable}, variable can be, by order of priority: + 1. the string itself without evaluation (format: "raw:xxx") + 2. an evaluated sub-string (format: "eval:xxx") + 3. an evaluated condition (format: "eval_cond:xxx") + 4. a string with escaped chars (format: "esc:xxx" or "\xxx") + 5. a string with chars to hide (format: "hide:char,string") + 6. a string with max chars (format: "cut:max,suffix,string" or "cut:+max,suffix,string") + or max chars displayed on screen (format: "cutscr:max,suffix,string" or "cutscr:+max,suffix,string") + 7. a reversed string (format: "rev:xxx" or "revscr:xxx") + 8. a repeated string (format: "repeat:count,string") + 9. length of a string (format: "length:xxx" or "lengthscr:xxx") + 10. a color (format: "color:xxx", see "Plugin API reference", function "color") + 11. a modifier (format: "modifier:name,data,string") + 12. an info (format: "info:name,arguments", arguments are optional) + 13. a base 16/32/64 encoded/decoded string (format: "base_encode:base,xxx" or "base_decode:base,xxx") + 14. current date/time (format: "date" or "date:format") + 15. an environment variable (format: "env:XXX") + 16. a ternary operator (format: "if:condition?value_if_true:value_if_false") + 17. result of an expression with parentheses and operators + - * / // % ** (format: "calc:xxx") + 18. an option (format: "file.section.option") + 19. a local variable in buffer + 20. a hdata name/variable (the value is automatically converted to string), by default "window" and "buffer" point to current window/buffer. +Format for hdata can be one of following: + hdata.var1.var2...: start with a hdata (pointer must be known), and ask variables one after one (other hdata can be followed) + hdata[list].var1.var2...: start with a hdata using a list, for example: + ${buffer[gui_buffers].full_name}: full name of first buffer in linked list of buffers + ${plugin[weechat_plugins].name}: name of first plugin in linked list of plugins + hdata[pointer].var1.var2...: start with a hdata using a pointer, for example: + ${buffer[0x1234abcd].full_name}: full name of the buffer with this pointer (can be used in triggers) +For name of hdata and variables, please look at "Plugin API reference", function "weechat_hdata_get". -Przykłady (proste ciągi): +Examples (simple strings): + /eval -n ${raw:${info:version}} ==> ${info:version} /eval -n ${eval_cond:${window.win_width}>100} ==> 1 /eval -n ${info:version} ==> 0.4.3 /eval -n ${env:HOME} ==> /home/user /eval -n ${weechat.look.scroll_amount} ==> 3 - /eval -n ${sec.data.freenode_password} ==> secret + /eval -n ${sec.data.freenode_password} ==> secret /eval -n ${window} ==> 0x2549aa0 /eval -n ${window.buffer} ==> 0x2549320 /eval -n ${window.buffer.full_name} ==> core.weechat @@ -1392,7 +1394,7 @@ Przykłady (proste ciągi): /eval -n ${base_encode:64,test} ==> dGVzdA== /eval -n ${base_decode:64,dGVzdA==} ==> test -Przykłady (warunki): +Examples (conditions): /eval -n -c ${window.buffer.number} > 2 ==> 0 /eval -n -c ${window.win_width} > 100 ==> 1 /eval -n -c (8 > 12) || (5 > 2) ==> 1 diff --git a/po/cs.po b/po/cs.po index 9e4ba43ad..49aa517ae 100644 --- a/po/cs.po +++ b/po/cs.po @@ -21,7 +21,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2021-02-03 18:29+0100\n" +"POT-Creation-Date: 2021-02-05 19:50+0100\n" "PO-Revision-Date: 2020-04-28 16:40+0200\n" "Last-Translator: Ondřej Súkup \n" "Language-Team: weechat-dev \n" @@ -1598,32 +1598,33 @@ msgid "" "\n" "Some variables are replaced in expression, using the format ${variable}, " "variable can be, by order of priority:\n" -" 1. an evaluated sub-string (format: \"eval:xxx\")\n" -" 2. an evaluated condition (format: \"eval_cond:xxx\")\n" -" 3. a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n" -" 4. a string with chars to hide (format: \"hide:char,string\")\n" -" 5. a string with max chars (format: \"cut:max,suffix,string\" or \"cut:" +" 1. the string itself without evaluation (format: \"raw:xxx\")\n" +" 2. an evaluated sub-string (format: \"eval:xxx\")\n" +" 3. an evaluated condition (format: \"eval_cond:xxx\")\n" +" 4. a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n" +" 5. a string with chars to hide (format: \"hide:char,string\")\n" +" 6. a string with max chars (format: \"cut:max,suffix,string\" or \"cut:" "+max,suffix,string\")\n" " or max chars displayed on screen (format: \"cutscr:max,suffix,string\" " "or \"cutscr:+max,suffix,string\")\n" -" 6. a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n" -" 7. a repeated string (format: \"repeat:count,string\")\n" -" 8. length of a string (format: \"length:xxx\" or \"lengthscr:xxx\")\n" -" 9. a color (format: \"color:xxx\", see \"Plugin API reference\", function " +" 7. a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n" +" 8. a repeated string (format: \"repeat:count,string\")\n" +" 9. length of a string (format: \"length:xxx\" or \"lengthscr:xxx\")\n" +" 10. a color (format: \"color:xxx\", see \"Plugin API reference\", function " "\"color\")\n" -" 10. a modifier (format: \"modifier:name,data,string\")\n" -" 11. an info (format: \"info:name,arguments\", arguments are optional)\n" -" 12. a base 16/32/64 encoded/decoded string (format: \"base_encode:base,xxx" +" 11. a modifier (format: \"modifier:name,data,string\")\n" +" 12. an info (format: \"info:name,arguments\", arguments are optional)\n" +" 13. a base 16/32/64 encoded/decoded string (format: \"base_encode:base,xxx" "\" or \"base_decode:base,xxx\")\n" -" 13. current date/time (format: \"date\" or \"date:format\")\n" -" 14. an environment variable (format: \"env:XXX\")\n" -" 15. a ternary operator (format: \"if:condition?value_if_true:value_if_false" +" 14. current date/time (format: \"date\" or \"date:format\")\n" +" 15. an environment variable (format: \"env:XXX\")\n" +" 16. a ternary operator (format: \"if:condition?value_if_true:value_if_false" "\")\n" -" 16. result of an expression with parentheses and operators + - * / // % ** " +" 17. result of an expression with parentheses and operators + - * / // % ** " "(format: \"calc:xxx\")\n" -" 17. an option (format: \"file.section.option\")\n" -" 18. a local variable in buffer\n" -" 19. a hdata name/variable (the value is automatically converted to " +" 18. an option (format: \"file.section.option\")\n" +" 19. a local variable in buffer\n" +" 20. a hdata name/variable (the value is automatically converted to " "string), by default \"window\" and \"buffer\" point to current window/" "buffer.\n" "Format for hdata can be one of following:\n" @@ -1642,6 +1643,7 @@ msgid "" "function \"weechat_hdata_get\".\n" "\n" "Examples (simple strings):\n" +" /eval -n ${raw:${info:version}} ==> ${info:version}\n" " /eval -n ${eval_cond:${window.win_width}>100} ==> 1\n" " /eval -n ${info:version} ==> 0.4.3\n" " /eval -n ${env:HOME} ==> /home/user\n" diff --git a/po/de.po b/po/de.po index f6a856308..43a0f08bd 100644 --- a/po/de.po +++ b/po/de.po @@ -24,7 +24,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2021-02-03 18:29+0100\n" +"POT-Creation-Date: 2021-02-05 19:50+0100\n" "PO-Revision-Date: 2021-02-05 10:56+0100\n" "Last-Translator: Nils Görs \n" "Language-Team: German \n" @@ -1688,6 +1688,7 @@ msgstr "" "[-n|-s] [-d] || [-n] [-d [-d]] -c " "" +#, fuzzy msgid "" " -n: display result without sending it to buffer (debug mode)\n" " -s: split expression before evaluating it (many commands can be " @@ -1738,32 +1739,33 @@ msgid "" "\n" "Some variables are replaced in expression, using the format ${variable}, " "variable can be, by order of priority:\n" -" 1. an evaluated sub-string (format: \"eval:xxx\")\n" -" 2. an evaluated condition (format: \"eval_cond:xxx\")\n" -" 3. a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n" -" 4. a string with chars to hide (format: \"hide:char,string\")\n" -" 5. a string with max chars (format: \"cut:max,suffix,string\" or \"cut:" +" 1. the string itself without evaluation (format: \"raw:xxx\")\n" +" 2. an evaluated sub-string (format: \"eval:xxx\")\n" +" 3. an evaluated condition (format: \"eval_cond:xxx\")\n" +" 4. a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n" +" 5. a string with chars to hide (format: \"hide:char,string\")\n" +" 6. a string with max chars (format: \"cut:max,suffix,string\" or \"cut:" "+max,suffix,string\")\n" " or max chars displayed on screen (format: \"cutscr:max,suffix,string\" " "or \"cutscr:+max,suffix,string\")\n" -" 6. a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n" -" 7. a repeated string (format: \"repeat:count,string\")\n" -" 8. length of a string (format: \"length:xxx\" or \"lengthscr:xxx\")\n" -" 9. a color (format: \"color:xxx\", see \"Plugin API reference\", function " +" 7. a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n" +" 8. a repeated string (format: \"repeat:count,string\")\n" +" 9. length of a string (format: \"length:xxx\" or \"lengthscr:xxx\")\n" +" 10. a color (format: \"color:xxx\", see \"Plugin API reference\", function " "\"color\")\n" -" 10. a modifier (format: \"modifier:name,data,string\")\n" -" 11. an info (format: \"info:name,arguments\", arguments are optional)\n" -" 12. a base 16/32/64 encoded/decoded string (format: \"base_encode:base,xxx" +" 11. a modifier (format: \"modifier:name,data,string\")\n" +" 12. an info (format: \"info:name,arguments\", arguments are optional)\n" +" 13. a base 16/32/64 encoded/decoded string (format: \"base_encode:base,xxx" "\" or \"base_decode:base,xxx\")\n" -" 13. current date/time (format: \"date\" or \"date:format\")\n" -" 14. an environment variable (format: \"env:XXX\")\n" -" 15. a ternary operator (format: \"if:condition?value_if_true:value_if_false" +" 14. current date/time (format: \"date\" or \"date:format\")\n" +" 15. an environment variable (format: \"env:XXX\")\n" +" 16. a ternary operator (format: \"if:condition?value_if_true:value_if_false" "\")\n" -" 16. result of an expression with parentheses and operators + - * / // % ** " +" 17. result of an expression with parentheses and operators + - * / // % ** " "(format: \"calc:xxx\")\n" -" 17. an option (format: \"file.section.option\")\n" -" 18. a local variable in buffer\n" -" 19. a hdata name/variable (the value is automatically converted to " +" 18. an option (format: \"file.section.option\")\n" +" 19. a local variable in buffer\n" +" 20. a hdata name/variable (the value is automatically converted to " "string), by default \"window\" and \"buffer\" point to current window/" "buffer.\n" "Format for hdata can be one of following:\n" @@ -1782,6 +1784,7 @@ msgid "" "function \"weechat_hdata_get\".\n" "\n" "Examples (simple strings):\n" +" /eval -n ${raw:${info:version}} ==> ${info:version}\n" " /eval -n ${eval_cond:${window.win_width}>100} ==> 1\n" " /eval -n ${info:version} ==> 0.4.3\n" " /eval -n ${env:HOME} ==> /home/user\n" diff --git a/po/es.po b/po/es.po index e83b1ddc4..45ebe2c64 100644 --- a/po/es.po +++ b/po/es.po @@ -22,7 +22,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2021-02-03 18:29+0100\n" +"POT-Creation-Date: 2021-02-05 19:50+0100\n" "PO-Revision-Date: 2020-04-28 16:40+0200\n" "Last-Translator: Elián Hanisch \n" "Language-Team: weechat-dev \n" @@ -1628,32 +1628,33 @@ msgid "" "\n" "Some variables are replaced in expression, using the format ${variable}, " "variable can be, by order of priority:\n" -" 1. an evaluated sub-string (format: \"eval:xxx\")\n" -" 2. an evaluated condition (format: \"eval_cond:xxx\")\n" -" 3. a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n" -" 4. a string with chars to hide (format: \"hide:char,string\")\n" -" 5. a string with max chars (format: \"cut:max,suffix,string\" or \"cut:" +" 1. the string itself without evaluation (format: \"raw:xxx\")\n" +" 2. an evaluated sub-string (format: \"eval:xxx\")\n" +" 3. an evaluated condition (format: \"eval_cond:xxx\")\n" +" 4. a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n" +" 5. a string with chars to hide (format: \"hide:char,string\")\n" +" 6. a string with max chars (format: \"cut:max,suffix,string\" or \"cut:" "+max,suffix,string\")\n" " or max chars displayed on screen (format: \"cutscr:max,suffix,string\" " "or \"cutscr:+max,suffix,string\")\n" -" 6. a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n" -" 7. a repeated string (format: \"repeat:count,string\")\n" -" 8. length of a string (format: \"length:xxx\" or \"lengthscr:xxx\")\n" -" 9. a color (format: \"color:xxx\", see \"Plugin API reference\", function " +" 7. a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n" +" 8. a repeated string (format: \"repeat:count,string\")\n" +" 9. length of a string (format: \"length:xxx\" or \"lengthscr:xxx\")\n" +" 10. a color (format: \"color:xxx\", see \"Plugin API reference\", function " "\"color\")\n" -" 10. a modifier (format: \"modifier:name,data,string\")\n" -" 11. an info (format: \"info:name,arguments\", arguments are optional)\n" -" 12. a base 16/32/64 encoded/decoded string (format: \"base_encode:base,xxx" +" 11. a modifier (format: \"modifier:name,data,string\")\n" +" 12. an info (format: \"info:name,arguments\", arguments are optional)\n" +" 13. a base 16/32/64 encoded/decoded string (format: \"base_encode:base,xxx" "\" or \"base_decode:base,xxx\")\n" -" 13. current date/time (format: \"date\" or \"date:format\")\n" -" 14. an environment variable (format: \"env:XXX\")\n" -" 15. a ternary operator (format: \"if:condition?value_if_true:value_if_false" +" 14. current date/time (format: \"date\" or \"date:format\")\n" +" 15. an environment variable (format: \"env:XXX\")\n" +" 16. a ternary operator (format: \"if:condition?value_if_true:value_if_false" "\")\n" -" 16. result of an expression with parentheses and operators + - * / // % ** " +" 17. result of an expression with parentheses and operators + - * / // % ** " "(format: \"calc:xxx\")\n" -" 17. an option (format: \"file.section.option\")\n" -" 18. a local variable in buffer\n" -" 19. a hdata name/variable (the value is automatically converted to " +" 18. an option (format: \"file.section.option\")\n" +" 19. a local variable in buffer\n" +" 20. a hdata name/variable (the value is automatically converted to " "string), by default \"window\" and \"buffer\" point to current window/" "buffer.\n" "Format for hdata can be one of following:\n" @@ -1672,6 +1673,7 @@ msgid "" "function \"weechat_hdata_get\".\n" "\n" "Examples (simple strings):\n" +" /eval -n ${raw:${info:version}} ==> ${info:version}\n" " /eval -n ${eval_cond:${window.win_width}>100} ==> 1\n" " /eval -n ${info:version} ==> 0.4.3\n" " /eval -n ${env:HOME} ==> /home/user\n" diff --git a/po/fr.po b/po/fr.po index 9590a7907..fae690e18 100644 --- a/po/fr.po +++ b/po/fr.po @@ -21,8 +21,8 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2021-02-03 18:29+0100\n" -"PO-Revision-Date: 2021-02-03 18:29+0100\n" +"POT-Creation-Date: 2021-02-03 18:45+0100\n" +"PO-Revision-Date: 2021-02-05 19:58+0100\n" "Last-Translator: Sébastien Helleu \n" "Language-Team: weechat-dev \n" "Language: fr\n" @@ -1712,32 +1712,33 @@ msgid "" "\n" "Some variables are replaced in expression, using the format ${variable}, " "variable can be, by order of priority:\n" -" 1. an evaluated sub-string (format: \"eval:xxx\")\n" -" 2. an evaluated condition (format: \"eval_cond:xxx\")\n" -" 3. a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n" -" 4. a string with chars to hide (format: \"hide:char,string\")\n" -" 5. a string with max chars (format: \"cut:max,suffix,string\" or \"cut:" +" 1. the string itself without evaluation (format: \"raw:xxx\")\n" +" 2. an evaluated sub-string (format: \"eval:xxx\")\n" +" 3. an evaluated condition (format: \"eval_cond:xxx\")\n" +" 4. a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n" +" 5. a string with chars to hide (format: \"hide:char,string\")\n" +" 6. a string with max chars (format: \"cut:max,suffix,string\" or \"cut:" "+max,suffix,string\")\n" " or max chars displayed on screen (format: \"cutscr:max,suffix,string\" " "or \"cutscr:+max,suffix,string\")\n" -" 6. a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n" -" 7. a repeated string (format: \"repeat:count,string\")\n" -" 8. length of a string (format: \"length:xxx\" or \"lengthscr:xxx\")\n" -" 9. a color (format: \"color:xxx\", see \"Plugin API reference\", function " +" 7. a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n" +" 8. a repeated string (format: \"repeat:count,string\")\n" +" 9. length of a string (format: \"length:xxx\" or \"lengthscr:xxx\")\n" +" 10. a color (format: \"color:xxx\", see \"Plugin API reference\", function " "\"color\")\n" -" 10. a modifier (format: \"modifier:name,data,string\")\n" -" 11. an info (format: \"info:name,arguments\", arguments are optional)\n" -" 12. a base 16/32/64 encoded/decoded string (format: \"base_encode:base,xxx" +" 11. a modifier (format: \"modifier:name,data,string\")\n" +" 12. an info (format: \"info:name,arguments\", arguments are optional)\n" +" 13. a base 16/32/64 encoded/decoded string (format: \"base_encode:base,xxx" "\" or \"base_decode:base,xxx\")\n" -" 13. current date/time (format: \"date\" or \"date:format\")\n" -" 14. an environment variable (format: \"env:XXX\")\n" -" 15. a ternary operator (format: \"if:condition?value_if_true:value_if_false" +" 14. current date/time (format: \"date\" or \"date:format\")\n" +" 15. an environment variable (format: \"env:XXX\")\n" +" 16. a ternary operator (format: \"if:condition?value_if_true:value_if_false" "\")\n" -" 16. result of an expression with parentheses and operators + - * / // % ** " +" 17. result of an expression with parentheses and operators + - * / // % ** " "(format: \"calc:xxx\")\n" -" 17. an option (format: \"file.section.option\")\n" -" 18. a local variable in buffer\n" -" 19. a hdata name/variable (the value is automatically converted to " +" 18. an option (format: \"file.section.option\")\n" +" 19. a local variable in buffer\n" +" 20. a hdata name/variable (the value is automatically converted to " "string), by default \"window\" and \"buffer\" point to current window/" "buffer.\n" "Format for hdata can be one of following:\n" @@ -1756,6 +1757,7 @@ msgid "" "function \"weechat_hdata_get\".\n" "\n" "Examples (simple strings):\n" +" /eval -n ${raw:${info:version}} ==> ${info:version}\n" " /eval -n ${eval_cond:${window.win_width}>100} ==> 1\n" " /eval -n ${info:version} ==> 0.4.3\n" " /eval -n ${env:HOME} ==> /home/user\n" @@ -1841,35 +1843,36 @@ msgstr "" "\n" "Des variables sont remplacées dans l'expression, en utilisant le format " "${variable}, la variable pouvant être, par ordre de priorité :\n" -" 1. une sous-chaîne évaluée (format : \"eval:xxx\")\n" -" 2. une condition évaluée (format : \"eval_cond:xxx\")\n" -" 3. une chaîne avec les caractères échappés (format : \"esc:xxx\" ou \"\\xxx" +" 1. la chaîne elle-même sans évaluation (format : \"raw:xxx\")\n" +" 2. une sous-chaîne évaluée (format : \"eval:xxx\")\n" +" 3. une condition évaluée (format : \"eval_cond:xxx\")\n" +" 4. une chaîne avec les caractères échappés (format : \"esc:xxx\" ou \"\\xxx" "\")\n" -" 4. une chaîne avec des caractères à cacher (format : \"hide:caractère," +" 5. une chaîne avec des caractères à cacher (format : \"hide:caractère," "chaîne\")\n" -" 5. une chaîne avec un maximum de caractères (format : \"cut:max,suffixe," +" 6. une chaîne avec un maximum de caractères (format : \"cut:max,suffixe," "chaîne\" ou \"cut:+max,suffixe,chaîne\")\n" " ou un maximum de caractères affichés à l'écran (format : \"cutscr:max," "suffixe,chaîne\" ou \"cutscr:+max,suffixe,chaîne\")\n" -" 6. une chaîne inversée (format : \"rev:xxx\" ou \"revscr:xxx\")\n" -" 7. une chaîne répétée (format : \"repeat:nombre,chaîne\")\n" -" 8. longueur d'une chaîne (format : \"length:xxx\" ou \"lengthscr:xxx\")\n" -" 9. une couleur (format : \"color:xxx\", voir la \"Référence API extension" +" 7. une chaîne inversée (format : \"rev:xxx\" ou \"revscr:xxx\")\n" +" 8. une chaîne répétée (format : \"repeat:nombre,chaîne\")\n" +" 9. longueur d'une chaîne (format : \"length:xxx\" ou \"lengthscr:xxx\")\n" +" 10. une couleur (format : \"color:xxx\", voir la \"Référence API extension" "\", fonction \"color\")\n" -" 10. un modificateur (format : \"modifier:nom,données,chaîne\")\n" -" 11. une info (format : \"info:nom,paramètres\", les paramètres sont " +" 11. un modificateur (format : \"modifier:nom,données,chaîne\")\n" +" 12. une info (format : \"info:nom,paramètres\", les paramètres sont " "optionnels)\n" -" 12. une chaîne encodée/decodée en base 16, 32 ou 64 (format : " +" 13. une chaîne encodée/decodée en base 16, 32 ou 64 (format : " "\"base_encode:base,xxx\" ou \"base_decode:base,xxx\")\n" -" 13. la date/heure courante (format : \"date\" ou \"date:format\")\n" -" 14. une variable d'environnement (format : \"env:XXX\")\n" -" 15. un opérateur ternaire (format : \"if:condition?valeur_si_vrai:" +" 14. la date/heure courante (format : \"date\" ou \"date:format\")\n" +" 15. une variable d'environnement (format : \"env:XXX\")\n" +" 16. un opérateur ternaire (format : \"if:condition?valeur_si_vrai:" "valeur_si_faux\")\n" -" 16. le résultat d'une expression avec parenthèses et les opérateurs + - " +" 17. le résultat d'une expression avec parenthèses et les opérateurs + - " "* / // % ** (format: \"calc:xxx\")\n" -" 17. une option (format : \"fichier.section.option\")\n" -" 18. une variable locale du tampon\n" -" 19. un hdata/variable (la valeur est automatiquement convertie en chaîne), " +" 18. une option (format : \"fichier.section.option\")\n" +" 19. une variable locale du tampon\n" +" 20. un hdata/variable (la valeur est automatiquement convertie en chaîne), " "par défaut \"window\" et \"buffer\" pointent vers la fenêtre et le tampon " "courants.\n" "Le format du hdata peut être le suivant :\n" @@ -1890,6 +1893,7 @@ msgstr "" "fonction \"weechat_hdata_get\".\n" "\n" "Exemples (chaînes simples) :\n" +" /eval -n ${raw:${info:version}} ==> ${info:version}\n" " /eval -n ${eval_cond:${window.win_width}>100} ==> 1\n" " /eval -n ${info:version} ==> 0.4.3\n" " /eval -n ${env:HOME} ==> /home/user\n" diff --git a/po/hu.po b/po/hu.po index 3f8d8cb72..7c0cc6436 100644 --- a/po/hu.po +++ b/po/hu.po @@ -20,7 +20,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2021-02-03 18:29+0100\n" +"POT-Creation-Date: 2021-02-05 19:50+0100\n" "PO-Revision-Date: 2020-04-28 16:40+0200\n" "Last-Translator: Andras Voroskoi \n" "Language-Team: weechat-dev \n" @@ -1516,32 +1516,33 @@ msgid "" "\n" "Some variables are replaced in expression, using the format ${variable}, " "variable can be, by order of priority:\n" -" 1. an evaluated sub-string (format: \"eval:xxx\")\n" -" 2. an evaluated condition (format: \"eval_cond:xxx\")\n" -" 3. a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n" -" 4. a string with chars to hide (format: \"hide:char,string\")\n" -" 5. a string with max chars (format: \"cut:max,suffix,string\" or \"cut:" +" 1. the string itself without evaluation (format: \"raw:xxx\")\n" +" 2. an evaluated sub-string (format: \"eval:xxx\")\n" +" 3. an evaluated condition (format: \"eval_cond:xxx\")\n" +" 4. a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n" +" 5. a string with chars to hide (format: \"hide:char,string\")\n" +" 6. a string with max chars (format: \"cut:max,suffix,string\" or \"cut:" "+max,suffix,string\")\n" " or max chars displayed on screen (format: \"cutscr:max,suffix,string\" " "or \"cutscr:+max,suffix,string\")\n" -" 6. a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n" -" 7. a repeated string (format: \"repeat:count,string\")\n" -" 8. length of a string (format: \"length:xxx\" or \"lengthscr:xxx\")\n" -" 9. a color (format: \"color:xxx\", see \"Plugin API reference\", function " +" 7. a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n" +" 8. a repeated string (format: \"repeat:count,string\")\n" +" 9. length of a string (format: \"length:xxx\" or \"lengthscr:xxx\")\n" +" 10. a color (format: \"color:xxx\", see \"Plugin API reference\", function " "\"color\")\n" -" 10. a modifier (format: \"modifier:name,data,string\")\n" -" 11. an info (format: \"info:name,arguments\", arguments are optional)\n" -" 12. a base 16/32/64 encoded/decoded string (format: \"base_encode:base,xxx" +" 11. a modifier (format: \"modifier:name,data,string\")\n" +" 12. an info (format: \"info:name,arguments\", arguments are optional)\n" +" 13. a base 16/32/64 encoded/decoded string (format: \"base_encode:base,xxx" "\" or \"base_decode:base,xxx\")\n" -" 13. current date/time (format: \"date\" or \"date:format\")\n" -" 14. an environment variable (format: \"env:XXX\")\n" -" 15. a ternary operator (format: \"if:condition?value_if_true:value_if_false" +" 14. current date/time (format: \"date\" or \"date:format\")\n" +" 15. an environment variable (format: \"env:XXX\")\n" +" 16. a ternary operator (format: \"if:condition?value_if_true:value_if_false" "\")\n" -" 16. result of an expression with parentheses and operators + - * / // % ** " +" 17. result of an expression with parentheses and operators + - * / // % ** " "(format: \"calc:xxx\")\n" -" 17. an option (format: \"file.section.option\")\n" -" 18. a local variable in buffer\n" -" 19. a hdata name/variable (the value is automatically converted to " +" 18. an option (format: \"file.section.option\")\n" +" 19. a local variable in buffer\n" +" 20. a hdata name/variable (the value is automatically converted to " "string), by default \"window\" and \"buffer\" point to current window/" "buffer.\n" "Format for hdata can be one of following:\n" @@ -1560,6 +1561,7 @@ msgid "" "function \"weechat_hdata_get\".\n" "\n" "Examples (simple strings):\n" +" /eval -n ${raw:${info:version}} ==> ${info:version}\n" " /eval -n ${eval_cond:${window.win_width}>100} ==> 1\n" " /eval -n ${info:version} ==> 0.4.3\n" " /eval -n ${env:HOME} ==> /home/user\n" diff --git a/po/it.po b/po/it.po index 203d81ee2..8bd5af587 100644 --- a/po/it.po +++ b/po/it.po @@ -20,7 +20,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2021-02-03 18:29+0100\n" +"POT-Creation-Date: 2021-02-05 19:50+0100\n" "PO-Revision-Date: 2020-04-28 16:40+0200\n" "Last-Translator: Esteban I. Ruiz Moreno \n" "Language-Team: weechat-dev \n" @@ -1611,32 +1611,33 @@ msgid "" "\n" "Some variables are replaced in expression, using the format ${variable}, " "variable can be, by order of priority:\n" -" 1. an evaluated sub-string (format: \"eval:xxx\")\n" -" 2. an evaluated condition (format: \"eval_cond:xxx\")\n" -" 3. a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n" -" 4. a string with chars to hide (format: \"hide:char,string\")\n" -" 5. a string with max chars (format: \"cut:max,suffix,string\" or \"cut:" +" 1. the string itself without evaluation (format: \"raw:xxx\")\n" +" 2. an evaluated sub-string (format: \"eval:xxx\")\n" +" 3. an evaluated condition (format: \"eval_cond:xxx\")\n" +" 4. a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n" +" 5. a string with chars to hide (format: \"hide:char,string\")\n" +" 6. a string with max chars (format: \"cut:max,suffix,string\" or \"cut:" "+max,suffix,string\")\n" " or max chars displayed on screen (format: \"cutscr:max,suffix,string\" " "or \"cutscr:+max,suffix,string\")\n" -" 6. a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n" -" 7. a repeated string (format: \"repeat:count,string\")\n" -" 8. length of a string (format: \"length:xxx\" or \"lengthscr:xxx\")\n" -" 9. a color (format: \"color:xxx\", see \"Plugin API reference\", function " +" 7. a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n" +" 8. a repeated string (format: \"repeat:count,string\")\n" +" 9. length of a string (format: \"length:xxx\" or \"lengthscr:xxx\")\n" +" 10. a color (format: \"color:xxx\", see \"Plugin API reference\", function " "\"color\")\n" -" 10. a modifier (format: \"modifier:name,data,string\")\n" -" 11. an info (format: \"info:name,arguments\", arguments are optional)\n" -" 12. a base 16/32/64 encoded/decoded string (format: \"base_encode:base,xxx" +" 11. a modifier (format: \"modifier:name,data,string\")\n" +" 12. an info (format: \"info:name,arguments\", arguments are optional)\n" +" 13. a base 16/32/64 encoded/decoded string (format: \"base_encode:base,xxx" "\" or \"base_decode:base,xxx\")\n" -" 13. current date/time (format: \"date\" or \"date:format\")\n" -" 14. an environment variable (format: \"env:XXX\")\n" -" 15. a ternary operator (format: \"if:condition?value_if_true:value_if_false" +" 14. current date/time (format: \"date\" or \"date:format\")\n" +" 15. an environment variable (format: \"env:XXX\")\n" +" 16. a ternary operator (format: \"if:condition?value_if_true:value_if_false" "\")\n" -" 16. result of an expression with parentheses and operators + - * / // % ** " +" 17. result of an expression with parentheses and operators + - * / // % ** " "(format: \"calc:xxx\")\n" -" 17. an option (format: \"file.section.option\")\n" -" 18. a local variable in buffer\n" -" 19. a hdata name/variable (the value is automatically converted to " +" 18. an option (format: \"file.section.option\")\n" +" 19. a local variable in buffer\n" +" 20. a hdata name/variable (the value is automatically converted to " "string), by default \"window\" and \"buffer\" point to current window/" "buffer.\n" "Format for hdata can be one of following:\n" @@ -1655,6 +1656,7 @@ msgid "" "function \"weechat_hdata_get\".\n" "\n" "Examples (simple strings):\n" +" /eval -n ${raw:${info:version}} ==> ${info:version}\n" " /eval -n ${eval_cond:${window.win_width}>100} ==> 1\n" " /eval -n ${info:version} ==> 0.4.3\n" " /eval -n ${env:HOME} ==> /home/user\n" diff --git a/po/ja.po b/po/ja.po index 59b771e4d..cc09e7c69 100644 --- a/po/ja.po +++ b/po/ja.po @@ -20,7 +20,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2021-02-03 18:29+0100\n" +"POT-Creation-Date: 2021-02-05 19:50+0100\n" "PO-Revision-Date: 2020-04-28 16:40+0200\n" "Last-Translator: AYANOKOUZI, Ryuunosuke \n" "Language-Team: Japanese ${info:version}\n" " /eval -n ${eval_cond:${window.win_width}>100} ==> 1\n" " /eval -n ${info:version} ==> 0.4.3\n" " /eval -n ${env:HOME} ==> /home/user\n" diff --git a/po/pl.po b/po/pl.po index 4e540b1a0..81193228e 100644 --- a/po/pl.po +++ b/po/pl.po @@ -22,7 +22,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2021-02-03 18:29+0100\n" +"POT-Creation-Date: 2021-02-05 19:50+0100\n" "PO-Revision-Date: 2021-01-15 21:34+0100\n" "Last-Translator: Krzysztof Korościk \n" "Language-Team: Polish \n" @@ -1656,6 +1656,7 @@ msgstr "" "[-n|-s] [-d] || [-n] [-d [-d]] -c " "" +#, fuzzy msgid "" " -n: display result without sending it to buffer (debug mode)\n" " -s: split expression before evaluating it (many commands can be " @@ -1706,32 +1707,33 @@ msgid "" "\n" "Some variables are replaced in expression, using the format ${variable}, " "variable can be, by order of priority:\n" -" 1. an evaluated sub-string (format: \"eval:xxx\")\n" -" 2. an evaluated condition (format: \"eval_cond:xxx\")\n" -" 3. a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n" -" 4. a string with chars to hide (format: \"hide:char,string\")\n" -" 5. a string with max chars (format: \"cut:max,suffix,string\" or \"cut:" +" 1. the string itself without evaluation (format: \"raw:xxx\")\n" +" 2. an evaluated sub-string (format: \"eval:xxx\")\n" +" 3. an evaluated condition (format: \"eval_cond:xxx\")\n" +" 4. a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n" +" 5. a string with chars to hide (format: \"hide:char,string\")\n" +" 6. a string with max chars (format: \"cut:max,suffix,string\" or \"cut:" "+max,suffix,string\")\n" " or max chars displayed on screen (format: \"cutscr:max,suffix,string\" " "or \"cutscr:+max,suffix,string\")\n" -" 6. a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n" -" 7. a repeated string (format: \"repeat:count,string\")\n" -" 8. length of a string (format: \"length:xxx\" or \"lengthscr:xxx\")\n" -" 9. a color (format: \"color:xxx\", see \"Plugin API reference\", function " +" 7. a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n" +" 8. a repeated string (format: \"repeat:count,string\")\n" +" 9. length of a string (format: \"length:xxx\" or \"lengthscr:xxx\")\n" +" 10. a color (format: \"color:xxx\", see \"Plugin API reference\", function " "\"color\")\n" -" 10. a modifier (format: \"modifier:name,data,string\")\n" -" 11. an info (format: \"info:name,arguments\", arguments are optional)\n" -" 12. a base 16/32/64 encoded/decoded string (format: \"base_encode:base,xxx" +" 11. a modifier (format: \"modifier:name,data,string\")\n" +" 12. an info (format: \"info:name,arguments\", arguments are optional)\n" +" 13. a base 16/32/64 encoded/decoded string (format: \"base_encode:base,xxx" "\" or \"base_decode:base,xxx\")\n" -" 13. current date/time (format: \"date\" or \"date:format\")\n" -" 14. an environment variable (format: \"env:XXX\")\n" -" 15. a ternary operator (format: \"if:condition?value_if_true:value_if_false" +" 14. current date/time (format: \"date\" or \"date:format\")\n" +" 15. an environment variable (format: \"env:XXX\")\n" +" 16. a ternary operator (format: \"if:condition?value_if_true:value_if_false" "\")\n" -" 16. result of an expression with parentheses and operators + - * / // % ** " +" 17. result of an expression with parentheses and operators + - * / // % ** " "(format: \"calc:xxx\")\n" -" 17. an option (format: \"file.section.option\")\n" -" 18. a local variable in buffer\n" -" 19. a hdata name/variable (the value is automatically converted to " +" 18. an option (format: \"file.section.option\")\n" +" 19. a local variable in buffer\n" +" 20. a hdata name/variable (the value is automatically converted to " "string), by default \"window\" and \"buffer\" point to current window/" "buffer.\n" "Format for hdata can be one of following:\n" @@ -1750,6 +1752,7 @@ msgid "" "function \"weechat_hdata_get\".\n" "\n" "Examples (simple strings):\n" +" /eval -n ${raw:${info:version}} ==> ${info:version}\n" " /eval -n ${eval_cond:${window.win_width}>100} ==> 1\n" " /eval -n ${info:version} ==> 0.4.3\n" " /eval -n ${env:HOME} ==> /home/user\n" diff --git a/po/pt.po b/po/pt.po index 781769fc2..1d4980fbd 100644 --- a/po/pt.po +++ b/po/pt.po @@ -20,7 +20,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2021-02-03 18:29+0100\n" +"POT-Creation-Date: 2021-02-05 19:50+0100\n" "PO-Revision-Date: 2020-04-28 16:40+0200\n" "Last-Translator: Vasco Almeida \n" "Language-Team: Portuguese <>\n" @@ -1670,32 +1670,33 @@ msgid "" "\n" "Some variables are replaced in expression, using the format ${variable}, " "variable can be, by order of priority:\n" -" 1. an evaluated sub-string (format: \"eval:xxx\")\n" -" 2. an evaluated condition (format: \"eval_cond:xxx\")\n" -" 3. a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n" -" 4. a string with chars to hide (format: \"hide:char,string\")\n" -" 5. a string with max chars (format: \"cut:max,suffix,string\" or \"cut:" +" 1. the string itself without evaluation (format: \"raw:xxx\")\n" +" 2. an evaluated sub-string (format: \"eval:xxx\")\n" +" 3. an evaluated condition (format: \"eval_cond:xxx\")\n" +" 4. a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n" +" 5. a string with chars to hide (format: \"hide:char,string\")\n" +" 6. a string with max chars (format: \"cut:max,suffix,string\" or \"cut:" "+max,suffix,string\")\n" " or max chars displayed on screen (format: \"cutscr:max,suffix,string\" " "or \"cutscr:+max,suffix,string\")\n" -" 6. a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n" -" 7. a repeated string (format: \"repeat:count,string\")\n" -" 8. length of a string (format: \"length:xxx\" or \"lengthscr:xxx\")\n" -" 9. a color (format: \"color:xxx\", see \"Plugin API reference\", function " +" 7. a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n" +" 8. a repeated string (format: \"repeat:count,string\")\n" +" 9. length of a string (format: \"length:xxx\" or \"lengthscr:xxx\")\n" +" 10. a color (format: \"color:xxx\", see \"Plugin API reference\", function " "\"color\")\n" -" 10. a modifier (format: \"modifier:name,data,string\")\n" -" 11. an info (format: \"info:name,arguments\", arguments are optional)\n" -" 12. a base 16/32/64 encoded/decoded string (format: \"base_encode:base,xxx" +" 11. a modifier (format: \"modifier:name,data,string\")\n" +" 12. an info (format: \"info:name,arguments\", arguments are optional)\n" +" 13. a base 16/32/64 encoded/decoded string (format: \"base_encode:base,xxx" "\" or \"base_decode:base,xxx\")\n" -" 13. current date/time (format: \"date\" or \"date:format\")\n" -" 14. an environment variable (format: \"env:XXX\")\n" -" 15. a ternary operator (format: \"if:condition?value_if_true:value_if_false" +" 14. current date/time (format: \"date\" or \"date:format\")\n" +" 15. an environment variable (format: \"env:XXX\")\n" +" 16. a ternary operator (format: \"if:condition?value_if_true:value_if_false" "\")\n" -" 16. result of an expression with parentheses and operators + - * / // % ** " +" 17. result of an expression with parentheses and operators + - * / // % ** " "(format: \"calc:xxx\")\n" -" 17. an option (format: \"file.section.option\")\n" -" 18. a local variable in buffer\n" -" 19. a hdata name/variable (the value is automatically converted to " +" 18. an option (format: \"file.section.option\")\n" +" 19. a local variable in buffer\n" +" 20. a hdata name/variable (the value is automatically converted to " "string), by default \"window\" and \"buffer\" point to current window/" "buffer.\n" "Format for hdata can be one of following:\n" @@ -1714,6 +1715,7 @@ msgid "" "function \"weechat_hdata_get\".\n" "\n" "Examples (simple strings):\n" +" /eval -n ${raw:${info:version}} ==> ${info:version}\n" " /eval -n ${eval_cond:${window.win_width}>100} ==> 1\n" " /eval -n ${info:version} ==> 0.4.3\n" " /eval -n ${env:HOME} ==> /home/user\n" diff --git a/po/pt_BR.po b/po/pt_BR.po index 72d7107f0..949632e15 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -21,7 +21,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2021-02-03 18:29+0100\n" +"POT-Creation-Date: 2021-02-05 19:50+0100\n" "PO-Revision-Date: 2020-04-18 11:34+0200\n" "Last-Translator: Eduardo Elias \n" "Language-Team: weechat-dev \n" @@ -1674,32 +1674,33 @@ msgid "" "\n" "Some variables are replaced in expression, using the format ${variable}, " "variable can be, by order of priority:\n" -" 1. an evaluated sub-string (format: \"eval:xxx\")\n" -" 2. an evaluated condition (format: \"eval_cond:xxx\")\n" -" 3. a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n" -" 4. a string with chars to hide (format: \"hide:char,string\")\n" -" 5. a string with max chars (format: \"cut:max,suffix,string\" or \"cut:" +" 1. the string itself without evaluation (format: \"raw:xxx\")\n" +" 2. an evaluated sub-string (format: \"eval:xxx\")\n" +" 3. an evaluated condition (format: \"eval_cond:xxx\")\n" +" 4. a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n" +" 5. a string with chars to hide (format: \"hide:char,string\")\n" +" 6. a string with max chars (format: \"cut:max,suffix,string\" or \"cut:" "+max,suffix,string\")\n" " or max chars displayed on screen (format: \"cutscr:max,suffix,string\" " "or \"cutscr:+max,suffix,string\")\n" -" 6. a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n" -" 7. a repeated string (format: \"repeat:count,string\")\n" -" 8. length of a string (format: \"length:xxx\" or \"lengthscr:xxx\")\n" -" 9. a color (format: \"color:xxx\", see \"Plugin API reference\", function " +" 7. a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n" +" 8. a repeated string (format: \"repeat:count,string\")\n" +" 9. length of a string (format: \"length:xxx\" or \"lengthscr:xxx\")\n" +" 10. a color (format: \"color:xxx\", see \"Plugin API reference\", function " "\"color\")\n" -" 10. a modifier (format: \"modifier:name,data,string\")\n" -" 11. an info (format: \"info:name,arguments\", arguments are optional)\n" -" 12. a base 16/32/64 encoded/decoded string (format: \"base_encode:base,xxx" +" 11. a modifier (format: \"modifier:name,data,string\")\n" +" 12. an info (format: \"info:name,arguments\", arguments are optional)\n" +" 13. a base 16/32/64 encoded/decoded string (format: \"base_encode:base,xxx" "\" or \"base_decode:base,xxx\")\n" -" 13. current date/time (format: \"date\" or \"date:format\")\n" -" 14. an environment variable (format: \"env:XXX\")\n" -" 15. a ternary operator (format: \"if:condition?value_if_true:value_if_false" +" 14. current date/time (format: \"date\" or \"date:format\")\n" +" 15. an environment variable (format: \"env:XXX\")\n" +" 16. a ternary operator (format: \"if:condition?value_if_true:value_if_false" "\")\n" -" 16. result of an expression with parentheses and operators + - * / // % ** " +" 17. result of an expression with parentheses and operators + - * / // % ** " "(format: \"calc:xxx\")\n" -" 17. an option (format: \"file.section.option\")\n" -" 18. a local variable in buffer\n" -" 19. a hdata name/variable (the value is automatically converted to " +" 18. an option (format: \"file.section.option\")\n" +" 19. a local variable in buffer\n" +" 20. a hdata name/variable (the value is automatically converted to " "string), by default \"window\" and \"buffer\" point to current window/" "buffer.\n" "Format for hdata can be one of following:\n" @@ -1718,6 +1719,7 @@ msgid "" "function \"weechat_hdata_get\".\n" "\n" "Examples (simple strings):\n" +" /eval -n ${raw:${info:version}} ==> ${info:version}\n" " /eval -n ${eval_cond:${window.win_width}>100} ==> 1\n" " /eval -n ${info:version} ==> 0.4.3\n" " /eval -n ${env:HOME} ==> /home/user\n" diff --git a/po/ru.po b/po/ru.po index 16951dce5..109d5aba7 100644 --- a/po/ru.po +++ b/po/ru.po @@ -21,7 +21,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2021-02-03 18:29+0100\n" +"POT-Creation-Date: 2021-02-05 19:50+0100\n" "PO-Revision-Date: 2020-04-28 16:40+0200\n" "Last-Translator: Aleksey V Zapparov AKA ixti \n" "Language-Team: weechat-dev \n" @@ -1538,32 +1538,33 @@ msgid "" "\n" "Some variables are replaced in expression, using the format ${variable}, " "variable can be, by order of priority:\n" -" 1. an evaluated sub-string (format: \"eval:xxx\")\n" -" 2. an evaluated condition (format: \"eval_cond:xxx\")\n" -" 3. a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n" -" 4. a string with chars to hide (format: \"hide:char,string\")\n" -" 5. a string with max chars (format: \"cut:max,suffix,string\" or \"cut:" +" 1. the string itself without evaluation (format: \"raw:xxx\")\n" +" 2. an evaluated sub-string (format: \"eval:xxx\")\n" +" 3. an evaluated condition (format: \"eval_cond:xxx\")\n" +" 4. a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n" +" 5. a string with chars to hide (format: \"hide:char,string\")\n" +" 6. a string with max chars (format: \"cut:max,suffix,string\" or \"cut:" "+max,suffix,string\")\n" " or max chars displayed on screen (format: \"cutscr:max,suffix,string\" " "or \"cutscr:+max,suffix,string\")\n" -" 6. a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n" -" 7. a repeated string (format: \"repeat:count,string\")\n" -" 8. length of a string (format: \"length:xxx\" or \"lengthscr:xxx\")\n" -" 9. a color (format: \"color:xxx\", see \"Plugin API reference\", function " +" 7. a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n" +" 8. a repeated string (format: \"repeat:count,string\")\n" +" 9. length of a string (format: \"length:xxx\" or \"lengthscr:xxx\")\n" +" 10. a color (format: \"color:xxx\", see \"Plugin API reference\", function " "\"color\")\n" -" 10. a modifier (format: \"modifier:name,data,string\")\n" -" 11. an info (format: \"info:name,arguments\", arguments are optional)\n" -" 12. a base 16/32/64 encoded/decoded string (format: \"base_encode:base,xxx" +" 11. a modifier (format: \"modifier:name,data,string\")\n" +" 12. an info (format: \"info:name,arguments\", arguments are optional)\n" +" 13. a base 16/32/64 encoded/decoded string (format: \"base_encode:base,xxx" "\" or \"base_decode:base,xxx\")\n" -" 13. current date/time (format: \"date\" or \"date:format\")\n" -" 14. an environment variable (format: \"env:XXX\")\n" -" 15. a ternary operator (format: \"if:condition?value_if_true:value_if_false" +" 14. current date/time (format: \"date\" or \"date:format\")\n" +" 15. an environment variable (format: \"env:XXX\")\n" +" 16. a ternary operator (format: \"if:condition?value_if_true:value_if_false" "\")\n" -" 16. result of an expression with parentheses and operators + - * / // % ** " +" 17. result of an expression with parentheses and operators + - * / // % ** " "(format: \"calc:xxx\")\n" -" 17. an option (format: \"file.section.option\")\n" -" 18. a local variable in buffer\n" -" 19. a hdata name/variable (the value is automatically converted to " +" 18. an option (format: \"file.section.option\")\n" +" 19. a local variable in buffer\n" +" 20. a hdata name/variable (the value is automatically converted to " "string), by default \"window\" and \"buffer\" point to current window/" "buffer.\n" "Format for hdata can be one of following:\n" @@ -1582,6 +1583,7 @@ msgid "" "function \"weechat_hdata_get\".\n" "\n" "Examples (simple strings):\n" +" /eval -n ${raw:${info:version}} ==> ${info:version}\n" " /eval -n ${eval_cond:${window.win_width}>100} ==> 1\n" " /eval -n ${info:version} ==> 0.4.3\n" " /eval -n ${env:HOME} ==> /home/user\n" diff --git a/po/tr.po b/po/tr.po index 9728cb712..cf19c241b 100644 --- a/po/tr.po +++ b/po/tr.po @@ -20,7 +20,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2021-02-03 18:29+0100\n" +"POT-Creation-Date: 2021-02-05 19:50+0100\n" "PO-Revision-Date: 2019-11-03 08:38+0100\n" "Last-Translator: Hasan Kiran \n" "Language-Team: weechat-dev \n" @@ -1369,32 +1369,33 @@ msgid "" "\n" "Some variables are replaced in expression, using the format ${variable}, " "variable can be, by order of priority:\n" -" 1. an evaluated sub-string (format: \"eval:xxx\")\n" -" 2. an evaluated condition (format: \"eval_cond:xxx\")\n" -" 3. a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n" -" 4. a string with chars to hide (format: \"hide:char,string\")\n" -" 5. a string with max chars (format: \"cut:max,suffix,string\" or \"cut:" +" 1. the string itself without evaluation (format: \"raw:xxx\")\n" +" 2. an evaluated sub-string (format: \"eval:xxx\")\n" +" 3. an evaluated condition (format: \"eval_cond:xxx\")\n" +" 4. a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n" +" 5. a string with chars to hide (format: \"hide:char,string\")\n" +" 6. a string with max chars (format: \"cut:max,suffix,string\" or \"cut:" "+max,suffix,string\")\n" " or max chars displayed on screen (format: \"cutscr:max,suffix,string\" " "or \"cutscr:+max,suffix,string\")\n" -" 6. a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n" -" 7. a repeated string (format: \"repeat:count,string\")\n" -" 8. length of a string (format: \"length:xxx\" or \"lengthscr:xxx\")\n" -" 9. a color (format: \"color:xxx\", see \"Plugin API reference\", function " +" 7. a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n" +" 8. a repeated string (format: \"repeat:count,string\")\n" +" 9. length of a string (format: \"length:xxx\" or \"lengthscr:xxx\")\n" +" 10. a color (format: \"color:xxx\", see \"Plugin API reference\", function " "\"color\")\n" -" 10. a modifier (format: \"modifier:name,data,string\")\n" -" 11. an info (format: \"info:name,arguments\", arguments are optional)\n" -" 12. a base 16/32/64 encoded/decoded string (format: \"base_encode:base,xxx" +" 11. a modifier (format: \"modifier:name,data,string\")\n" +" 12. an info (format: \"info:name,arguments\", arguments are optional)\n" +" 13. a base 16/32/64 encoded/decoded string (format: \"base_encode:base,xxx" "\" or \"base_decode:base,xxx\")\n" -" 13. current date/time (format: \"date\" or \"date:format\")\n" -" 14. an environment variable (format: \"env:XXX\")\n" -" 15. a ternary operator (format: \"if:condition?value_if_true:value_if_false" +" 14. current date/time (format: \"date\" or \"date:format\")\n" +" 15. an environment variable (format: \"env:XXX\")\n" +" 16. a ternary operator (format: \"if:condition?value_if_true:value_if_false" "\")\n" -" 16. result of an expression with parentheses and operators + - * / // % ** " +" 17. result of an expression with parentheses and operators + - * / // % ** " "(format: \"calc:xxx\")\n" -" 17. an option (format: \"file.section.option\")\n" -" 18. a local variable in buffer\n" -" 19. a hdata name/variable (the value is automatically converted to " +" 18. an option (format: \"file.section.option\")\n" +" 19. a local variable in buffer\n" +" 20. a hdata name/variable (the value is automatically converted to " "string), by default \"window\" and \"buffer\" point to current window/" "buffer.\n" "Format for hdata can be one of following:\n" @@ -1413,6 +1414,7 @@ msgid "" "function \"weechat_hdata_get\".\n" "\n" "Examples (simple strings):\n" +" /eval -n ${raw:${info:version}} ==> ${info:version}\n" " /eval -n ${eval_cond:${window.win_width}>100} ==> 1\n" " /eval -n ${info:version} ==> 0.4.3\n" " /eval -n ${env:HOME} ==> /home/user\n" diff --git a/po/weechat.pot b/po/weechat.pot index b2b558e61..579502745 100644 --- a/po/weechat.pot +++ b/po/weechat.pot @@ -21,7 +21,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2021-02-03 18:29+0100\n" +"POT-Creation-Date: 2021-02-05 19:50+0100\n" "PO-Revision-Date: 2014-08-16 10:27+0200\n" "Last-Translator: Sébastien Helleu \n" "Language-Team: weechat-dev \n" @@ -1371,32 +1371,33 @@ msgid "" "\n" "Some variables are replaced in expression, using the format ${variable}, " "variable can be, by order of priority:\n" -" 1. an evaluated sub-string (format: \"eval:xxx\")\n" -" 2. an evaluated condition (format: \"eval_cond:xxx\")\n" -" 3. a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n" -" 4. a string with chars to hide (format: \"hide:char,string\")\n" -" 5. a string with max chars (format: \"cut:max,suffix,string\" or \"cut:" +" 1. the string itself without evaluation (format: \"raw:xxx\")\n" +" 2. an evaluated sub-string (format: \"eval:xxx\")\n" +" 3. an evaluated condition (format: \"eval_cond:xxx\")\n" +" 4. a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n" +" 5. a string with chars to hide (format: \"hide:char,string\")\n" +" 6. a string with max chars (format: \"cut:max,suffix,string\" or \"cut:" "+max,suffix,string\")\n" " or max chars displayed on screen (format: \"cutscr:max,suffix,string\" " "or \"cutscr:+max,suffix,string\")\n" -" 6. a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n" -" 7. a repeated string (format: \"repeat:count,string\")\n" -" 8. length of a string (format: \"length:xxx\" or \"lengthscr:xxx\")\n" -" 9. a color (format: \"color:xxx\", see \"Plugin API reference\", function " +" 7. a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n" +" 8. a repeated string (format: \"repeat:count,string\")\n" +" 9. length of a string (format: \"length:xxx\" or \"lengthscr:xxx\")\n" +" 10. a color (format: \"color:xxx\", see \"Plugin API reference\", function " "\"color\")\n" -" 10. a modifier (format: \"modifier:name,data,string\")\n" -" 11. an info (format: \"info:name,arguments\", arguments are optional)\n" -" 12. a base 16/32/64 encoded/decoded string (format: \"base_encode:base,xxx" +" 11. a modifier (format: \"modifier:name,data,string\")\n" +" 12. an info (format: \"info:name,arguments\", arguments are optional)\n" +" 13. a base 16/32/64 encoded/decoded string (format: \"base_encode:base,xxx" "\" or \"base_decode:base,xxx\")\n" -" 13. current date/time (format: \"date\" or \"date:format\")\n" -" 14. an environment variable (format: \"env:XXX\")\n" -" 15. a ternary operator (format: \"if:condition?value_if_true:value_if_false" +" 14. current date/time (format: \"date\" or \"date:format\")\n" +" 15. an environment variable (format: \"env:XXX\")\n" +" 16. a ternary operator (format: \"if:condition?value_if_true:value_if_false" "\")\n" -" 16. result of an expression with parentheses and operators + - * / // % ** " +" 17. result of an expression with parentheses and operators + - * / // % ** " "(format: \"calc:xxx\")\n" -" 17. an option (format: \"file.section.option\")\n" -" 18. a local variable in buffer\n" -" 19. a hdata name/variable (the value is automatically converted to " +" 18. an option (format: \"file.section.option\")\n" +" 19. a local variable in buffer\n" +" 20. a hdata name/variable (the value is automatically converted to " "string), by default \"window\" and \"buffer\" point to current window/" "buffer.\n" "Format for hdata can be one of following:\n" @@ -1415,6 +1416,7 @@ msgid "" "function \"weechat_hdata_get\".\n" "\n" "Examples (simple strings):\n" +" /eval -n ${raw:${info:version}} ==> ${info:version}\n" " /eval -n ${eval_cond:${window.win_width}>100} ==> 1\n" " /eval -n ${info:version} ==> 0.4.3\n" " /eval -n ${env:HOME} ==> /home/user\n" diff --git a/src/core/wee-command.c b/src/core/wee-command.c index 3ecfde85f..cdb532796 100644 --- a/src/core/wee-command.c +++ b/src/core/wee-command.c @@ -7545,35 +7545,36 @@ command_init () "\n" "Some variables are replaced in expression, using the format " "${variable}, variable can be, by order of priority:\n" - " 1. an evaluated sub-string (format: \"eval:xxx\")\n" - " 2. an evaluated condition (format: \"eval_cond:xxx\")\n" - " 3. a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n" - " 4. a string with chars to hide (format: \"hide:char,string\")\n" - " 5. a string with max chars (format: \"cut:max,suffix,string\" " + " 1. the string itself without evaluation (format: \"raw:xxx\")\n" + " 2. an evaluated sub-string (format: \"eval:xxx\")\n" + " 3. an evaluated condition (format: \"eval_cond:xxx\")\n" + " 4. a string with escaped chars (format: \"esc:xxx\" or \"\\xxx\")\n" + " 5. a string with chars to hide (format: \"hide:char,string\")\n" + " 6. a string with max chars (format: \"cut:max,suffix,string\" " "or \"cut:+max,suffix,string\")\n" " or max chars displayed on screen " "(format: \"cutscr:max,suffix,string\" or " "\"cutscr:+max,suffix,string\")\n" - " 6. a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n" - " 7. a repeated string (format: \"repeat:count,string\")\n" - " 8. length of a string (format: \"length:xxx\" or " + " 7. a reversed string (format: \"rev:xxx\" or \"revscr:xxx\")\n" + " 8. a repeated string (format: \"repeat:count,string\")\n" + " 9. length of a string (format: \"length:xxx\" or " "\"lengthscr:xxx\")\n" - " 9. a color (format: \"color:xxx\", see \"Plugin API " + " 10. a color (format: \"color:xxx\", see \"Plugin API " "reference\", function \"color\")\n" - " 10. a modifier (format: \"modifier:name,data,string\")\n" - " 11. an info (format: \"info:name,arguments\", arguments are " + " 11. a modifier (format: \"modifier:name,data,string\")\n" + " 12. an info (format: \"info:name,arguments\", arguments are " "optional)\n" - " 12. a base 16/32/64 encoded/decoded string (format: " + " 13. a base 16/32/64 encoded/decoded string (format: " "\"base_encode:base,xxx\" or \"base_decode:base,xxx\")\n" - " 13. current date/time (format: \"date\" or \"date:format\")\n" - " 14. an environment variable (format: \"env:XXX\")\n" - " 15. a ternary operator (format: " + " 14. current date/time (format: \"date\" or \"date:format\")\n" + " 15. an environment variable (format: \"env:XXX\")\n" + " 16. a ternary operator (format: " "\"if:condition?value_if_true:value_if_false\")\n" - " 16. result of an expression with parentheses and operators " + " 17. result of an expression with parentheses and operators " "+ - * / // % ** (format: \"calc:xxx\")\n" - " 17. an option (format: \"file.section.option\")\n" - " 18. a local variable in buffer\n" - " 19. a hdata name/variable (the value is automatically converted " + " 18. an option (format: \"file.section.option\")\n" + " 19. a local variable in buffer\n" + " 20. a hdata name/variable (the value is automatically converted " "to string), by default \"window\" and \"buffer\" point to current " "window/buffer.\n" "Format for hdata can be one of following:\n" @@ -7593,6 +7594,7 @@ command_init () "reference\", function \"weechat_hdata_get\".\n" "\n" "Examples (simple strings):\n" + " /eval -n ${raw:${info:version}} ==> ${info:version}\n" " /eval -n ${eval_cond:${window.win_width}>100} ==> 1\n" " /eval -n ${info:version} ==> 0.4.3\n" " /eval -n ${env:HOME} ==> /home/user\n" diff --git a/src/core/wee-eval.c b/src/core/wee-eval.c index ebe95131f..0e250e47d 100644 --- a/src/core/wee-eval.c +++ b/src/core/wee-eval.c @@ -985,32 +985,33 @@ end: /* * Replaces variables, which can be, by order of priority: - * 1. an extra variable from hashtable "extra_vars" - * 2. a string to evaluate (format: eval:xxx) - * 3. a condition to evaluate (format: eval_cond:xxx) - * 4. a string with escaped chars (format: esc:xxx or \xxx) - * 5. a string with chars to hide (format: hide:char,string) - * 6. a string with max chars (format: cut:max,suffix,string or + * 1. the string itself without evaluation (format: raw:xxx) + * 2. an extra variable from hashtable "extra_vars" + * 3. a string to evaluate (format: eval:xxx) + * 4. a condition to evaluate (format: eval_cond:xxx) + * 5. a string with escaped chars (format: esc:xxx or \xxx) + * 6. a string with chars to hide (format: hide:char,string) + * 7. a string with max chars (format: cut:max,suffix,string or * cut:+max,suffix,string) or max chars on screen * (format: cutscr:max,suffix,string or cutscr:+max,suffix,string) - * 7. a reversed string (format: rev:xxx) or reversed string for screen, + * 8. a reversed string (format: rev:xxx) or reversed string for screen, * color codes are not reversed (format: revscr:xxx) - * 8. a repeated string (format: repeat:count,string) - * 9. length of a string (format: length:xxx) or length of a string on screen + * 9. a repeated string (format: repeat:count,string) + * 10. length of a string (format: length:xxx) or length of a string on screen * (format: lengthscr:xxx); color codes are ignored - * 10. a regex group captured (format: re:N (0.99) or re:+) - * 11. a color (format: color:xxx) - * 12. a modifier (format: modifier:name,data,xxx) - * 13. an info (format: info:name,arguments) - * 14. a base 16/32/64 encoded/decoded string (format: base_encode:base,xxx + * 11. a regex group captured (format: re:N (0.99) or re:+) + * 12. a color (format: color:xxx) + * 13. a modifier (format: modifier:name,data,xxx) + * 14. an info (format: info:name,arguments) + * 15. a base 16/32/64 encoded/decoded string (format: base_encode:base,xxx * or base_decode:base,xxx) - * 15. current date/time (format: date or date:xxx) - * 16. an environment variable (format: env:XXX) - * 17. a ternary operator (format: if:condition?value_if_true:value_if_false) - * 18. calculate result of an expression (format: calc:xxx) - * 19. an option (format: file.section.option) - * 20. a buffer local variable - * 21. a hdata variable (format: hdata.var1.var2 or hdata[list].var1.var2 + * 16. current date/time (format: date or date:xxx) + * 17. an environment variable (format: env:XXX) + * 18. a ternary operator (format: if:condition?value_if_true:value_if_false) + * 19. calculate result of an expression (format: calc:xxx) + * 20. an option (format: file.section.option) + * 21. a buffer local variable + * 22. a hdata variable (format: hdata.var1.var2 or hdata[list].var1.var2 * or hdata[ptr].var1.var2) * * See /help in WeeChat for examples. @@ -1034,7 +1035,16 @@ eval_replace_vars_cb (void *data, const char *text) EVAL_DEBUG_MSG(1, "eval_replace_vars_cb(\"%s\")", text); - /* 1. variable in hashtable "extra_vars" */ + /* + * 1. raw text (no evaluation at all) + */ + if (strncmp (text, "raw:", 4) == 0) + { + value = strdup (text + 4); + goto end; + } + + /* 2. variable in hashtable "extra_vars" */ if (eval_context->extra_vars) { ptr_value = hashtable_get (eval_context->extra_vars, text); @@ -1060,7 +1070,7 @@ eval_replace_vars_cb (void *data, const char *text) } /* - * 2. force evaluation of string (recursive call) + * 3. force evaluation of string (recursive call) * --> use with caution: the text must be safe! */ if (strncmp (text, "eval:", 5) == 0) @@ -1070,7 +1080,7 @@ eval_replace_vars_cb (void *data, const char *text) } /* - * 3. force evaluation of condition (recursive call) + * 4. force evaluation of condition (recursive call) * --> use with caution: the text must be safe! */ if (strncmp (text, "eval_cond:", 10) == 0) @@ -1079,7 +1089,7 @@ eval_replace_vars_cb (void *data, const char *text) goto end; } - /* 4. convert escaped chars */ + /* 5. convert escaped chars */ if (strncmp (text, "esc:", 4) == 0) { value = string_convert_escaped_chars (text + 4); @@ -1091,7 +1101,7 @@ eval_replace_vars_cb (void *data, const char *text) goto end; } - /* 5. hide chars: replace all chars by a given char/string */ + /* 6. hide chars: replace all chars by a given char/string */ if (strncmp (text, "hide:", 5) == 0) { value = eval_string_hide (text + 5); @@ -1099,7 +1109,7 @@ eval_replace_vars_cb (void *data, const char *text) } /* - * 6. cut chars: + * 7. cut chars: * cut: max number of chars, and add an optional suffix when the * string is cut * cutscr: max number of chars displayed on screen, and add an optional @@ -1116,7 +1126,7 @@ eval_replace_vars_cb (void *data, const char *text) goto end; } - /* 7. reverse string */ + /* 8. reverse string */ if (strncmp (text, "rev:", 4) == 0) { value = string_reverse (text + 4); @@ -1128,7 +1138,7 @@ eval_replace_vars_cb (void *data, const char *text) goto end; } - /* 8. repeated string */ + /* 9. repeated string */ if (strncmp (text, "repeat:", 7) == 0) { value = eval_string_repeat (text + 7); @@ -1136,7 +1146,7 @@ eval_replace_vars_cb (void *data, const char *text) } /* - * 9. length of string: + * 10. length of string: * length: number of chars * lengthscr: number of chars displayed on screen */ @@ -1155,35 +1165,35 @@ eval_replace_vars_cb (void *data, const char *text) goto end; } - /* 10. regex group captured */ + /* 11. regex group captured */ if (strncmp (text, "re:", 3) == 0) { value = eval_string_regex_group (text + 3, eval_context); goto end; } - /* 11. color code */ + /* 12. color code */ if (strncmp (text, "color:", 6) == 0) { value = eval_string_color (text + 6); goto end; } - /* 12. modifier */ + /* 13. modifier */ if (strncmp (text, "modifier:", 9) == 0) { value = eval_string_modifier (text + 9); goto end; } - /* 13. info */ + /* 14. info */ if (strncmp (text, "info:", 5) == 0) { value = eval_string_info (text + 5); goto end; } - /* 14. base_encode/base_decode */ + /* 15. base_encode/base_decode */ if (strncmp (text, "base_encode:", 12) == 0) { value = eval_string_base_encode (text + 12); @@ -1195,14 +1205,14 @@ eval_replace_vars_cb (void *data, const char *text) goto end; } - /* 15. current date/time */ + /* 16. current date/time */ if ((strncmp (text, "date", 4) == 0) && (!text[4] || (text[4] == ':'))) { value = eval_string_date (text + 4); goto end; } - /* 16. environment variable */ + /* 17. environment variable */ if (strncmp (text, "env:", 4) == 0) { ptr_value = getenv (text + 4); @@ -1210,7 +1220,7 @@ eval_replace_vars_cb (void *data, const char *text) goto end; } - /* 17: ternary operator: if:condition?value_if_true:value_if_false */ + /* 18: ternary operator: if:condition?value_if_true:value_if_false */ if (strncmp (text, "if:", 3) == 0) { value = eval_string_if (text + 3, eval_context); @@ -1218,7 +1228,7 @@ eval_replace_vars_cb (void *data, const char *text) } /* - * 18. calculate the result of an expression + * 19. calculate the result of an expression * (with number, operators and parentheses) */ if (strncmp (text, "calc:", 5) == 0) @@ -1227,7 +1237,7 @@ eval_replace_vars_cb (void *data, const char *text) goto end; } - /* 19. option: if found, return this value */ + /* 20. option: if found, return this value */ if (strncmp (text, "sec.data.", 9) == 0) { ptr_value = hashtable_get (secure_hashtable_data, text + 9); @@ -1270,7 +1280,7 @@ eval_replace_vars_cb (void *data, const char *text) } } - /* 20. local variable in buffer */ + /* 21. local variable in buffer */ ptr_buffer = hashtable_get (eval_context->pointers, "buffer"); if (ptr_buffer) { @@ -1282,7 +1292,7 @@ eval_replace_vars_cb (void *data, const char *text) } } - /* 21. hdata */ + /* 22. hdata */ value = eval_string_hdata (text, eval_context); end: @@ -1300,7 +1310,7 @@ end: char * eval_replace_vars (const char *expr, struct t_eval_context *eval_context) { - const char *no_replace_prefix_list[] = { "if:", NULL }; + const char *no_replace_prefix_list[] = { "if:", "raw:", NULL }; char *result; int debug_id; diff --git a/tests/unit/core/test-core-eval.cpp b/tests/unit/core/test-core-eval.cpp index d565c6cdf..fcc61aaf9 100644 --- a/tests/unit/core/test-core-eval.cpp +++ b/tests/unit/core/test-core-eval.cpp @@ -465,6 +465,12 @@ TEST(CoreEval, EvalExpression) WEE_CHECK_EVAL("", "${}"); WEE_CHECK_EVAL("", "${xyz}"); + /* test raw string */ + WEE_CHECK_EVAL("${info:version}", "${raw:${info:version}}"); + WEE_CHECK_EVAL("yes", "${if:${raw:test?}==${raw:test?}?yes:no}"); + WEE_CHECK_EVAL("no", "${if:${raw:test?}==${raw:test}?yes:no}"); + WEE_CHECK_EVAL("16", "${length:${raw:${buffer.number}}}"); + /* test eval of substring */ WEE_CHECK_EVAL("\t", "${eval:${\\t}}");