diff --git a/ChangeLog.adoc b/ChangeLog.adoc index a8ca9b752..364856728 100644 --- a/ChangeLog.adoc +++ b/ChangeLog.adoc @@ -20,6 +20,7 @@ https://weechat.org/files/releasenotes/ReleaseNotes-devel.html[release notes] New features:: + * core: add case sensitive wildcard matching comparison operator (`+==*+` and `+!!*+`) and case sensitive/insensitive include comparison operators (`+==-+`, `+!!-+`, `+=-+`, `+!-+`) in evaluation of expressions * core: add default key kbd:[Alt+Shift+N] to toggle nicklist bar * core: add command line option "--stdout" in weechat-headless binary to log to stdout rather than ~/.weechat/weechat.log (issue #1475, issue #1477) * core: reload configuration files on SIGHUP (issue #1476) diff --git a/doc/de/includes/autogen_user_commands.de.adoc b/doc/de/includes/autogen_user_commands.de.adoc index f080f22ea..e844ebabc 100644 --- a/doc/de/includes/autogen_user_commands.de.adoc +++ b/doc/de/includes/autogen_user_commands.de.adoc @@ -1282,69 +1282,75 @@ infolists: zeigt Information über die Infolists an /eval [-n|-s] [-d] [-n] [-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 - -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) + -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 + -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 Zeichenkette mit Escapesequenzen (Format: "esc:xxx" oder "\xxx") - 3. Zeichen, die in einer Zeichenkette nicht dargestellt werden sollen (Format: "hide:Zeichen,Zeichenkette") - 4. 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") - 5. eine Zeichenkette umkehren (Format: "rev:xxx" oder "revscr:xxx") - 6. eine Zeichenkette wiederholen (Format: "repeat:Anzahl,Zeichenkette") - 7. Länge einer Zeichenkette (Format: "length:xxx" oder "lengthscr:xxx") - 8. eine Farbe (Format: "color:xxx", siehe "Anleitung für API Erweiterung", Funktion "color") - 9. ein Modifizierer (Format: "info:Name,Argumente", Argumente sind optional) - 10. eine Info (Format: "Info:Name,Argumente", Argumente sind optional) - 11. aktuelles Datum/Uhrzeit (Format: "date" oder "date:format") - 12. eine Umgebungsvariable (Format: "env:XXX") - 13. ein Dreifachoperand (Format: "if:Bedingung?Wert_falls_wahr:Wert_falls_unwahr") - 14. Ergebnis eines Ausdrucks mit Klammern und Operatoren + - * / // % ** (Format: "calc:xxx") - 15. eine Option (Format: "file.section.option") - 16. eine lokale Variable eines Buffers - 17. 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. an evaluated sub-string (format: "eval:xxx") + 2. a string with escaped chars (format: "esc:xxx" or "\xxx") + 3. a string with chars to hide (format: "hide:char,string") + 4. 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") + 5. a reversed string (format: "rev:xxx" or "revscr:xxx") + 6. a repeated string (format: "repeat:count,string") + 7. length of a string (format: "length:xxx" or "lengthscr:xxx") + 8. a color (format: "color:xxx", see "Plugin API reference", function "color") + 9. a modifier (format: "modifier:name,data,string") + 10. an info (format: "info:name,arguments", arguments are optional) + 11. current date/time (format: "date" or "date:format") + 12. an environment variable (format: "env:XXX") + 13. a ternary operator (format: "if:condition?value_if_true:value_if_false") + 14. result of an expression with parentheses and operators + - * / // % ** (format: "calc:xxx") + 15. an option (format: "file.section.option") + 16. a local variable in buffer + 17. 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 ${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 @@ -1360,16 +1366,17 @@ Beispiele (einfache Zeichenketten): /eval -n ${length:test} ==> 4 /eval -n ${calc:(5+2)*3} ==> 21 -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 +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 f9f7f59eb..427b99d4d 100644 --- a/doc/en/includes/autogen_user_commands.en.adoc +++ b/doc/en/includes/autogen_user_commands.en.adoc @@ -1289,19 +1289,25 @@ infolists: display infos about infolists 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" + && 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 (wildcard "*" is allowed) - !* is NOT matching mask (wildcard "*" is allowed) + == 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 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: @@ -1370,6 +1376,7 @@ Examples (conditions): /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/weechat_plugin_api.en.adoc b/doc/en/weechat_plugin_api.en.adoc index d0fe0192f..692ff6e70 100644 --- a/doc/en/weechat_plugin_api.en.adoc +++ b/doc/en/weechat_plugin_api.en.adoc @@ -2148,7 +2148,8 @@ str3 = weechat.string_input_for_buffer("//test") # "/test" ==== string_eval_expression -_WeeChat ≥ 0.4.0, updated in 0.4.2, 0.4.3, 1.0, 1.1, 1.2, 1.3, 1.6, 1.8, 2.0, 2.2, 2.3 and 2.7._ +_WeeChat ≥ 0.4.0, updated in 0.4.2, 0.4.3, 1.0, 1.1, 1.2, 1.3, 1.6, 1.8, 2.0, +2.2, 2.3, 2.7 and 2.9._ Evaluate an expression and return result as a string. Special variables with format `+${variable}+` are expanded (see table below). @@ -2313,19 +2314,67 @@ from first used to last): `+0+` + `+1+` -| `+=*+` + - _(WeeChat ≥ 1.8)_ | - Is matching mask where "*" is allowed (see function <<_string_match,string_match>>) | - `+abc def =* a*f+` + - `+abc def =* y*z+` | +| `+==*+` | + Is matching mask where "*" is allowed, case sensitive (see function <<_string_match,string_match>>) + + _(WeeChat ≥ 2.9)_ | + `+abc def ==* a*f+` + + `+abc def ==* y*z+` | `+1+` + `+0+` -| `+!*+` + +| `+!!*+` | + Is NOT wildcard mask where "*" is allowed, case sensitive (see function <<_string_match,string_match>>) + + _(WeeChat ≥ 2.9)_ | + `+abc def !!* a*f+` + + `+abc def !!* y*z+` | + `+0+` + + `+1+` + +| `+=*+` | + Is matching mask where "*" is allowed, case insensitive (see function <<_string_match,string_match>>) + _(WeeChat ≥ 1.8)_ | - Is NOT wildcard mask where "*" is allowed (see function <<_string_match,string_match>>) | - `+abc def !* a*f+` + - `+abc def !* y*z+` | + `+abc def =* A*F+` + + `+abc def =* Y*Z+` | + `+1+` + + `+0+` + +| `+!*+` | + Is NOT wildcard mask where "*" is allowed, case insensitive (see function <<_string_match,string_match>>) + + _(WeeChat ≥ 1.8)_ | + `+abc def !* A*F+` + + `+abc def !* Y*Z+` | + `+0+` + + `+1+` + +| `+==-+` | + Is included, case sensitive + + _(WeeChat ≥ 2.9)_ | + `+abc def ==- bc+` + + `+abc def ==- xyz+` | + `+1+` + + `+0+` + +| `+!!-+` | + Is NOT included, case sensitive + + _(WeeChat ≥ 2.9)_ | + `+abc def !!- bc+` + + `+abc def !!- xyz+` | + `+0+` + + `+1+` + +| `+=-+` | + Is included, case insensitive + + _(WeeChat ≥ 2.9)_ | + `+abc def =- BC+` + + `+abc def =- XYZ+` | + `+1+` + + `+0+` + +| `+!-+` | + Is NOT included, case insensitive + + _(WeeChat ≥ 2.9)_ | + `+abc def !- BC+` + + `+abc def !- XYZ+` | `+0+` + `+1+` diff --git a/doc/fr/includes/autogen_user_commands.fr.adoc b/doc/fr/includes/autogen_user_commands.fr.adoc index 101007bae..31b0414e8 100644 --- a/doc/fr/includes/autogen_user_commands.fr.adoc +++ b/doc/fr/includes/autogen_user_commands.fr.adoc @@ -1289,19 +1289,25 @@ infolists : afficher des infos sur les infolists expression : expression à évaluer, les variables avec le format ${variable} sont remplacées (voir ci-dessous) ; plusieurs commandes peuvent être séparées par des points-virgules opérateur : un opérateur logique ou de comparaison : - opérateurs logiques : - && "et" booléen - || "ou" booléen + && "et" booléen + || "ou" booléen - opérateurs de comparaison : - == égal - != non égal - <= inférieur ou égal - < inférieur - >= supérieur ou égal - > supérieur - =~ correspond à l'expression régulière POSIX étendue - !~ ne correspond PAS à l'expression régulière POSIX étendue - =* correspond au masque (le caractère joker "*" est autorisé) - != ne correspond PAS au masque (le caractère joker "*" est autorisé) + == égal + != non égal + <= inférieur ou égal + < inférieur + >= supérieur ou égal + > supérieur + =~ correspond à l'expression régulière POSIX étendue + !~ ne correspond PAS à l'expression régulière POSIX étendue + ==* correspond au masque, sensible à la casse (le caractère joker "*" est autorisé) + !!* ne correspond PAS au masque, sensible à la casse (le caractère joker "*" est autorisé) + =* correspond au masque, insensible à la casse (le caractère joker "*" est autorisé) + != ne correspond PAS au masque, insensible à la casse (le caractère joker "*" est autorisé) + ==- est inclus, sensible à la casse + !!- n'est PAS inclus, sensible à la casse + =- est inclus, insensible à la casse + !- n'est PAS inclus, insensible à la casse Une expression est considérée comme "vraie" si elle est non NULL, non vide, et différente de "0". La comparaison est faite en utilisant des nombres à virgule si les deux expressions sont des nombres valides, avec l'un de ces formats : @@ -1370,6 +1376,7 @@ Exemples (conditions) : /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/fr/weechat_plugin_api.fr.adoc b/doc/fr/weechat_plugin_api.fr.adoc index d741db6d4..da699d056 100644 --- a/doc/fr/weechat_plugin_api.fr.adoc +++ b/doc/fr/weechat_plugin_api.fr.adoc @@ -2187,7 +2187,8 @@ str3 = weechat.string_input_for_buffer("//test") # "/test" ==== string_eval_expression -_WeeChat ≥ 0.4.0, mis à jour dans la 0.4.2, 0.4.3, 1.0, 1.1, 1.2, 1.3, 1.6, 1.8, 2.0, 2.2, 2.3 et 2.7._ +_WeeChat ≥ 0.4.0, mis à jour dans la 0.4.2, 0.4.3, 1.0, 1.1, 1.2, 1.3, 1.6, 1.8, +2.0, 2.2, 2.3, 2.7 et 2.9._ Évaluer l'expression et retourner le résultat sous forme de chaîne. Les variables spéciales avec le format `+${variable}+` sont étendues (voir le @@ -2358,19 +2359,67 @@ Liste des opérateurs de comparaison qui peuvent être utilisés dans les condit `+0+` + `+1+` -| `+=*+` + - _(WeeChat ≥ 1.8)_ | - Correspond au masque où le caractère joker "*" est autorisé (voir la fonction <<_string_match,string_match>>) | - `+abc def =* a*f+` + - `+abc def =* y*z+` | +| `+==*+` | + Correspond au masque où le caractère joker "*" est autorisé, sensible à la casse (voir la fonction <<_string_match,string_match>>) + + _(WeeChat ≥ 2.9)_ | + `+abc def ==* a*f+` + + `+abc def ==* y*z+` | `+1+` + `+0+` -| `+!*+` + +| `+!!*+` | + Ne correspond PAS au masque où le caractère joker "*" est autorisé, sensible à la casse (voir la fonction <<_string_match,string_match>>) + + _(WeeChat ≥ 2.9)_ | + `+abc def !!* a*f+` + + `+abc def !!* y*z+` | + `+0+` + + `+1+` + +| `+=*+` | + Correspond au masque où le caractère joker "*" est autorisé, insensible à la casse (voir la fonction <<_string_match,string_match>>) + _(WeeChat ≥ 1.8)_ | - Ne correspond PAS au masque où le caractère joker "*" est autorisé (voir la fonction <<_string_match,string_match>>) | - `+abc def !* a*f+` + - `+abc def !* y*z+` | + `+abc def =* A*F+` + + `+abc def =* Y*Z+` | + `+1+` + + `+0+` + +| `+!*+` | + Ne correspond PAS au masque où le caractère joker "*" est autorisé, insensible à la casse (voir la fonction <<_string_match,string_match>>) + + _(WeeChat ≥ 1.8)_ | + `+abc def !* A*F+` + + `+abc def !* Y*Z+` | + `+0+` + + `+1+` + +| `+==-+` | + Est inclus, sensible à la casse + + _(WeeChat ≥ 2.9)_ | + `+abc def ==- bc+` + + `+abc def ==- xyz+` | + `+1+` + + `+0+` + +| `+!!-+` | + N'est PAS inclus, sensible à la casse + + _(WeeChat ≥ 2.9)_ | + `+abc def !!- bc+` + + `+abc def !!- xyz+` | + `+0+` + + `+1+` + +| `+=-+` | + Est inclus, insensible à la casse + + _(WeeChat ≥ 2.9)_ | + `+abc def =- BC+` + + `+abc def =- XYZ+` | + `+1+` + + `+0+` + +| `+!-+` | + N'est PAS inclus, insensible à la casse + + _(WeeChat ≥ 2.9)_ | + `+abc def !- BC+` + + `+abc def !- XYZ+` | `+0+` + `+1+` diff --git a/doc/it/includes/autogen_user_commands.it.adoc b/doc/it/includes/autogen_user_commands.it.adoc index e9f2a8440..6424aaf87 100644 --- a/doc/it/includes/autogen_user_commands.it.adoc +++ b/doc/it/includes/autogen_user_commands.it.adoc @@ -1289,19 +1289,25 @@ infolists: display infos about infolists 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" + && 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 (wildcard "*" is allowed) - !* is NOT matching mask (wildcard "*" is allowed) + == 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 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: @@ -1370,6 +1376,7 @@ Examples (conditions): /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/it/weechat_plugin_api.it.adoc b/doc/it/weechat_plugin_api.it.adoc index bbb6dea51..b2767b89a 100644 --- a/doc/it/weechat_plugin_api.it.adoc +++ b/doc/it/weechat_plugin_api.it.adoc @@ -2242,7 +2242,8 @@ str3 = weechat.string_input_for_buffer("//test") # "/test" ==== string_eval_expression // TRANSLATION MISSING -_WeeChat ≥ 0.4.0, updated in 0.4.2, 0.4.3, 1.0, 1.1, 1.2, 1.3, 1.6, 1.8, 2.0, 2.2, 2.3 and 2.7._ +_WeeChat ≥ 0.4.0, updated in 0.4.2, 0.4.3, 1.0, 1.1, 1.2, 1.3, 1.6, 1.8, 2.0, +2.2, 2.3, 2.7 and 2.9._ // TRANSLATION MISSING Evaluate an expression and return result as a string. @@ -2416,19 +2417,67 @@ from first used to last): `+0+` + `+1+` -| `+=*+` + - _(WeeChat ≥ 1.8)_ | - Is matching mask where "*" is allowed (see function <<_string_match,string_match>>) | - `+abc def =* a*f+` + - `+abc def =* y*z+` | +| `+==*+` | + Is matching mask where "*" is allowed, case sensitive (see function <<_string_match,string_match>>) + + _(WeeChat ≥ 2.9)_ | + `+abc def ==* a*f+` + + `+abc def ==* y*z+` | `+1+` + `+0+` -| `+!*+` + +| `+!!*+` | + Is NOT wildcard mask where "*" is allowed, case sensitive (see function <<_string_match,string_match>>) + + _(WeeChat ≥ 2.9)_ | + `+abc def !!* a*f+` + + `+abc def !!* y*z+` | + `+0+` + + `+1+` + +| `+=*+` | + Is matching mask where "*" is allowed, case insensitive (see function <<_string_match,string_match>>) + _(WeeChat ≥ 1.8)_ | - Is NOT matching mask where "*" is allowed (see function <<_string_match,string_match>>) | - `+abc def !* a*f+` + - `+abc def !* y*z+` | + `+abc def =* A*F+` + + `+abc def =* Y*Z+` | + `+1+` + + `+0+` + +| `+!*+` | + Is NOT wildcard mask where "*" is allowed, case insensitive (see function <<_string_match,string_match>>) + + _(WeeChat ≥ 1.8)_ | + `+abc def !* A*F+` + + `+abc def !* Y*Z+` | + `+0+` + + `+1+` + +| `+==-+` | + Is included, case sensitive + + _(WeeChat ≥ 2.9)_ | + `+abc def ==- bc+` + + `+abc def ==- xyz+` | + `+1+` + + `+0+` + +| `+!!-+` | + Is NOT included, case sensitive + + _(WeeChat ≥ 2.9)_ | + `+abc def !!- bc+` + + `+abc def !!- xyz+` | + `+0+` + + `+1+` + +| `+=-+` | + Is included, case insensitive + + _(WeeChat ≥ 2.9)_ | + `+abc def =- BC+` + + `+abc def =- XYZ+` | + `+1+` + + `+0+` + +| `+!-+` | + Is NOT included, case insensitive + + _(WeeChat ≥ 2.9)_ | + `+abc def !- BC+` + + `+abc def !- XYZ+` | `+0+` + `+1+` diff --git a/doc/ja/includes/autogen_user_commands.ja.adoc b/doc/ja/includes/autogen_user_commands.ja.adoc index 26c7232af..ac0bbc176 100644 --- a/doc/ja/includes/autogen_user_commands.ja.adoc +++ b/doc/ja/includes/autogen_user_commands.ja.adoc @@ -1289,19 +1289,25 @@ infolists: インフォリストに関する情報を表示 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" + && 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 (wildcard "*" is allowed) - !* is NOT matching mask (wildcard "*" is allowed) + == 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 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: @@ -1370,6 +1376,7 @@ Examples (conditions): /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/ja/weechat_plugin_api.ja.adoc b/doc/ja/weechat_plugin_api.ja.adoc index 10c243718..cafcd1cc1 100644 --- a/doc/ja/weechat_plugin_api.ja.adoc +++ b/doc/ja/weechat_plugin_api.ja.adoc @@ -2162,7 +2162,8 @@ str3 = weechat.string_input_for_buffer("//test") # "/test" ==== string_eval_expression // TRANSLATION MISSING -_WeeChat ≥ 0.4.0, updated in 0.4.2, 0.4.3, 1.0, 1.1, 1.2, 1.3, 1.6, 1.8, 2.0, 2.2, 2.3 and 2.7._ +_WeeChat ≥ 0.4.0, updated in 0.4.2, 0.4.3, 1.0, 1.1, 1.2, 1.3, 1.6, 1.8, 2.0, +2.2, 2.3, 2.7 and 2.9._ 式を評価して文字列として返す。`+${variable}+` という書式で書かれた特殊変数は展開されます (以下の表を参照)。 @@ -2327,19 +2328,75 @@ str5 = weechat.string_eval_expression("password=abc password=def", {}, {}, optio `+0+` + `+1+` -| `+=*+` + - _(WeeChat バージョン 1.8 以上で利用可)_ | - マスクにマッチ、"*" を指定できます (関数 <<_string_match,string_match>> を確認してください) | - `+abc def =* a*f+` + - `+abc def =* y*z+` | +// TRANSLATION MISSING +| `+==*+` | + Is matching mask where "*" is allowed, case sensitive (see function <<_string_match,string_match>>) + + _(WeeChat ≥ 2.9)_ | + `+abc def ==* a*f+` + + `+abc def ==* y*z+` | `+1+` + `+0+` -| `+!*+` + - _(WeeChat バージョン 1.8 以上で利用可)_ | - マスクにマッチしない、"*" を指定できます (関数 <<_string_match,string_match>> を確認してください) | - `+abc def !* a*f+` + - `+abc def !* y*z+` | +// TRANSLATION MISSING +| `+!!*+` | + Is NOT wildcard mask where "*" is allowed, case sensitive (see function <<_string_match,string_match>>) + + _(WeeChat ≥ 2.9)_ | + `+abc def !!* a*f+` + + `+abc def !!* y*z+` | + `+0+` + + `+1+` + +// TRANSLATION MISSING +| `+=*+` | + Is matching mask where "*" is allowed, case insensitive (see function <<_string_match,string_match>>) + + _(WeeChat ≥ 1.8)_ | + `+abc def =* A*F+` + + `+abc def =* Y*Z+` | + `+1+` + + `+0+` + +// TRANSLATION MISSING +| `+!*+` | + Is NOT wildcard mask where "*" is allowed, case insensitive (see function <<_string_match,string_match>>) + + _(WeeChat ≥ 1.8)_ | + `+abc def !* A*F+` + + `+abc def !* Y*Z+` | + `+0+` + + `+1+` + +// TRANSLATION MISSING +| `+==-+` | + Is included, case sensitive + + _(WeeChat ≥ 2.9)_ | + `+abc def ==- bc+` + + `+abc def ==- xyz+` | + `+1+` + + `+0+` + +// TRANSLATION MISSING +| `+!!-+` | + Is NOT included, case sensitive + + _(WeeChat ≥ 2.9)_ | + `+abc def !!- bc+` + + `+abc def !!- xyz+` | + `+0+` + + `+1+` + +// TRANSLATION MISSING +| `+=-+` | + Is included, case insensitive + + _(WeeChat ≥ 2.9)_ | + `+abc def =- BC+` + + `+abc def =- XYZ+` | + `+1+` + + `+0+` + +// TRANSLATION MISSING +| `+!-+` | + Is NOT included, case insensitive + + _(WeeChat ≥ 2.9)_ | + `+abc def !- BC+` + + `+abc def !- XYZ+` | `+0+` + `+1+` diff --git a/doc/pl/includes/autogen_user_commands.pl.adoc b/doc/pl/includes/autogen_user_commands.pl.adoc index b3ea1f7b2..1c7b46e9f 100644 --- a/doc/pl/includes/autogen_user_commands.pl.adoc +++ b/doc/pl/includes/autogen_user_commands.pl.adoc @@ -1281,69 +1281,75 @@ infolists: wyświetla informacje o infolistach /eval [-n|-s] [-d] [-n] [-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 (dzika karta "*" dozwolona) - !* NIE pasuje do maski (dzika karta "*" dozwolona) + -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 + -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. ciąg z wyescapowanymi znakami (format: "esc:xxx" lub "\xxx") - 3. ciąg ze znakami do ukrycia (format: "hide:char,string") - 4. 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") - 5. odwrócony ciąg (format: "rev:xxx") - 6. powtórzony ciąg (format: "repeat:ilość,ciąg") - 7. długość ciągu (format: "length:xxx" or "lengthscr:xxx") - 8. kolor (format "color:xxx", zobacz „Opis API wtyczek”, funkcja "color") - 9. modyfikator (format: "modifier:name,data,string") - 10. informacja (format: "info:nazwa,argumenty", argumenty są opcjonalne) - 11. obecna data/czas (format: "date" lub "date:format") - 12. zmienna środowiskowa (format: "env:XXX") - 13. wyrażenie warunkowe (format: "if:condition?value_if_true:value_if_false") - 14. wynik wyrażenia z nawiasami i operatorami + - * / // % ** (format: "calc:xxx") - 15. opcja (format: plik.sekcja.opcja) - 16 zmienna lokalna w buforze - 17. 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. an evaluated sub-string (format: "eval:xxx") + 2. a string with escaped chars (format: "esc:xxx" or "\xxx") + 3. a string with chars to hide (format: "hide:char,string") + 4. 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") + 5. a reversed string (format: "rev:xxx" or "revscr:xxx") + 6. a repeated string (format: "repeat:count,string") + 7. length of a string (format: "length:xxx" or "lengthscr:xxx") + 8. a color (format: "color:xxx", see "Plugin API reference", function "color") + 9. a modifier (format: "modifier:name,data,string") + 10. an info (format: "info:name,arguments", arguments are optional) + 11. current date/time (format: "date" or "date:format") + 12. an environment variable (format: "env:XXX") + 13. a ternary operator (format: "if:condition?value_if_true:value_if_false") + 14. result of an expression with parentheses and operators + - * / // % ** (format: "calc:xxx") + 15. an option (format: "file.section.option") + 16. a local variable in buffer + 17. 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 ${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 @@ -1359,7 +1365,7 @@ Przykłady (proste ciągi): /eval -n ${length:test} ==> 4 /eval -n ${calc:(5+2)*3} ==> 21 -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 @@ -1369,6 +1375,7 @@ Przykłady (warunki): /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/po/cs.po b/po/cs.po index 1b9d26d5b..ec0906c5f 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: 2020-05-03 16:04+0200\n" +"POT-Creation-Date: 2020-05-05 20:43+0200\n" "PO-Revision-Date: 2020-04-28 16:40+0200\n" "Last-Translator: Ondřej Súkup \n" "Language-Team: weechat-dev \n" @@ -1548,19 +1548,29 @@ msgid "" "replaced (see below); many commands can be separated by semicolons\n" " operator: a logical or comparison operator:\n" " - logical operators:\n" -" && boolean \"and\"\n" -" || boolean \"or\"\n" +" && boolean \"and\"\n" +" || boolean \"or\"\n" " - comparison operators:\n" -" == equal\n" -" != not equal\n" -" <= less or equal\n" -" < less\n" -" >= greater or equal\n" -" > greater\n" -" =~ is matching POSIX extended regex\n" -" !~ is NOT matching POSIX extended regex\n" -" =* is matching mask (wildcard \"*\" is allowed)\n" -" !* is NOT matching mask (wildcard \"*\" is allowed)\n" +" == equal\n" +" != not equal\n" +" <= less or equal\n" +" < less\n" +" >= greater or equal\n" +" > greater\n" +" =~ is matching POSIX extended regex\n" +" !~ is NOT matching POSIX extended regex\n" +" ==* is matching mask, case sensitive (wildcard \"*\" is " +"allowed)\n" +" !!* is NOT matching mask, case sensitive (wildcard \"*\" is " +"allowed)\n" +" =* is matching mask, case insensitive (wildcard \"*\" is " +"allowed)\n" +" !* is NOT matching mask, case insensitive (wildcard \"*\" " +"is allowed)\n" +" ==- is included, case sensitive\n" +" !!- is NOT included, case sensitive\n" +" =- is included, case insensitive\n" +" !- is NOT included, case insensitive\n" "\n" "An expression is considered as \"true\" if it is not NULL, not empty, and " "different from \"0\".\n" @@ -1645,7 +1655,8 @@ msgid "" " /eval -n -c abcd =~ (?-i)^ABC ==> 0\n" " /eval -n -c abcd =~ (?-i)^abc ==> 1\n" " /eval -n -c abcd !~ abc ==> 0\n" -" /eval -n -c abcd =* a*d ==> 1" +" /eval -n -c abcd =* a*d ==> 1\n" +" /eval -n -c abcd =- bc ==> 1" msgstr "" msgid "" diff --git a/po/de.po b/po/de.po index d929c2e28..70a74e852 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: 2020-05-03 16:04+0200\n" +"POT-Creation-Date: 2020-05-05 20:43+0200\n" "PO-Revision-Date: 2020-04-29 09:20+0200\n" "Last-Translator: Nils Görs \n" "Language-Team: German \n" @@ -1678,6 +1678,7 @@ msgstr "" "[-n|-s] [-d] || [-n] [-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 " @@ -1689,19 +1690,29 @@ msgid "" "replaced (see below); many commands can be separated by semicolons\n" " operator: a logical or comparison operator:\n" " - logical operators:\n" -" && boolean \"and\"\n" -" || boolean \"or\"\n" +" && boolean \"and\"\n" +" || boolean \"or\"\n" " - comparison operators:\n" -" == equal\n" -" != not equal\n" -" <= less or equal\n" -" < less\n" -" >= greater or equal\n" -" > greater\n" -" =~ is matching POSIX extended regex\n" -" !~ is NOT matching POSIX extended regex\n" -" =* is matching mask (wildcard \"*\" is allowed)\n" -" !* is NOT matching mask (wildcard \"*\" is allowed)\n" +" == equal\n" +" != not equal\n" +" <= less or equal\n" +" < less\n" +" >= greater or equal\n" +" > greater\n" +" =~ is matching POSIX extended regex\n" +" !~ is NOT matching POSIX extended regex\n" +" ==* is matching mask, case sensitive (wildcard \"*\" is " +"allowed)\n" +" !!* is NOT matching mask, case sensitive (wildcard \"*\" is " +"allowed)\n" +" =* is matching mask, case insensitive (wildcard \"*\" is " +"allowed)\n" +" !* is NOT matching mask, case insensitive (wildcard \"*\" " +"is allowed)\n" +" ==- is included, case sensitive\n" +" !!- is NOT included, case sensitive\n" +" =- is included, case insensitive\n" +" !- is NOT included, case insensitive\n" "\n" "An expression is considered as \"true\" if it is not NULL, not empty, and " "different from \"0\".\n" @@ -1786,7 +1797,8 @@ msgid "" " /eval -n -c abcd =~ (?-i)^ABC ==> 0\n" " /eval -n -c abcd =~ (?-i)^abc ==> 1\n" " /eval -n -c abcd !~ abc ==> 0\n" -" /eval -n -c abcd =* a*d ==> 1" +" /eval -n -c abcd =* a*d ==> 1\n" +" /eval -n -c abcd =- bc ==> 1" msgstr "" " -n: gibt das Ergebnis aus, ohne dass dieses in den Buffer gesendet " "wird (debug Modus)\n" diff --git a/po/es.po b/po/es.po index 1c7f68c54..154c77bbb 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: 2020-05-03 16:04+0200\n" +"POT-Creation-Date: 2020-05-05 20:43+0200\n" "PO-Revision-Date: 2020-04-28 16:40+0200\n" "Last-Translator: Elián Hanisch \n" "Language-Team: weechat-dev \n" @@ -1578,19 +1578,29 @@ msgid "" "replaced (see below); many commands can be separated by semicolons\n" " operator: a logical or comparison operator:\n" " - logical operators:\n" -" && boolean \"and\"\n" -" || boolean \"or\"\n" +" && boolean \"and\"\n" +" || boolean \"or\"\n" " - comparison operators:\n" -" == equal\n" -" != not equal\n" -" <= less or equal\n" -" < less\n" -" >= greater or equal\n" -" > greater\n" -" =~ is matching POSIX extended regex\n" -" !~ is NOT matching POSIX extended regex\n" -" =* is matching mask (wildcard \"*\" is allowed)\n" -" !* is NOT matching mask (wildcard \"*\" is allowed)\n" +" == equal\n" +" != not equal\n" +" <= less or equal\n" +" < less\n" +" >= greater or equal\n" +" > greater\n" +" =~ is matching POSIX extended regex\n" +" !~ is NOT matching POSIX extended regex\n" +" ==* is matching mask, case sensitive (wildcard \"*\" is " +"allowed)\n" +" !!* is NOT matching mask, case sensitive (wildcard \"*\" is " +"allowed)\n" +" =* is matching mask, case insensitive (wildcard \"*\" is " +"allowed)\n" +" !* is NOT matching mask, case insensitive (wildcard \"*\" " +"is allowed)\n" +" ==- is included, case sensitive\n" +" !!- is NOT included, case sensitive\n" +" =- is included, case insensitive\n" +" !- is NOT included, case insensitive\n" "\n" "An expression is considered as \"true\" if it is not NULL, not empty, and " "different from \"0\".\n" @@ -1675,7 +1685,8 @@ msgid "" " /eval -n -c abcd =~ (?-i)^ABC ==> 0\n" " /eval -n -c abcd =~ (?-i)^abc ==> 1\n" " /eval -n -c abcd !~ abc ==> 0\n" -" /eval -n -c abcd =* a*d ==> 1" +" /eval -n -c abcd =* a*d ==> 1\n" +" /eval -n -c abcd =- bc ==> 1" msgstr "" msgid "" diff --git a/po/fr.po b/po/fr.po index 581d9de93..ef2f89b81 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: 2020-05-03 16:04+0200\n" -"PO-Revision-Date: 2020-05-03 16:05+0200\n" +"POT-Creation-Date: 2020-05-05 20:43+0200\n" +"PO-Revision-Date: 2020-05-05 20:43+0200\n" "Last-Translator: Sébastien Helleu \n" "Language-Team: weechat-dev \n" "Language: fr\n" @@ -1660,19 +1660,29 @@ msgid "" "replaced (see below); many commands can be separated by semicolons\n" " operator: a logical or comparison operator:\n" " - logical operators:\n" -" && boolean \"and\"\n" -" || boolean \"or\"\n" +" && boolean \"and\"\n" +" || boolean \"or\"\n" " - comparison operators:\n" -" == equal\n" -" != not equal\n" -" <= less or equal\n" -" < less\n" -" >= greater or equal\n" -" > greater\n" -" =~ is matching POSIX extended regex\n" -" !~ is NOT matching POSIX extended regex\n" -" =* is matching mask (wildcard \"*\" is allowed)\n" -" !* is NOT matching mask (wildcard \"*\" is allowed)\n" +" == equal\n" +" != not equal\n" +" <= less or equal\n" +" < less\n" +" >= greater or equal\n" +" > greater\n" +" =~ is matching POSIX extended regex\n" +" !~ is NOT matching POSIX extended regex\n" +" ==* is matching mask, case sensitive (wildcard \"*\" is " +"allowed)\n" +" !!* is NOT matching mask, case sensitive (wildcard \"*\" is " +"allowed)\n" +" =* is matching mask, case insensitive (wildcard \"*\" is " +"allowed)\n" +" !* is NOT matching mask, case insensitive (wildcard \"*\" " +"is allowed)\n" +" ==- is included, case sensitive\n" +" !!- is NOT included, case sensitive\n" +" =- is included, case insensitive\n" +" !- is NOT included, case insensitive\n" "\n" "An expression is considered as \"true\" if it is not NULL, not empty, and " "different from \"0\".\n" @@ -1757,7 +1767,8 @@ msgid "" " /eval -n -c abcd =~ (?-i)^ABC ==> 0\n" " /eval -n -c abcd =~ (?-i)^abc ==> 1\n" " /eval -n -c abcd !~ abc ==> 0\n" -" /eval -n -c abcd =* a*d ==> 1" +" /eval -n -c abcd =* a*d ==> 1\n" +" /eval -n -c abcd =- bc ==> 1" msgstr "" " -n : afficher le résultat sans envoyer au tampon (mode debug)\n" " -s : découper l'expression avant de l'évaluer (plusieurs commandes " @@ -1770,22 +1781,30 @@ msgstr "" "séparées par des points-virgules\n" " opérateur : un opérateur logique ou de comparaison :\n" " - opérateurs logiques :\n" -" && \"et\" booléen\n" -" || \"ou\" booléen\n" +" && \"et\" booléen\n" +" || \"ou\" booléen\n" " - opérateurs de comparaison :\n" -" == égal\n" -" != non égal\n" -" <= inférieur ou égal\n" -" < inférieur\n" -" >= supérieur ou égal\n" -" > supérieur\n" -" =~ correspond à l'expression régulière POSIX étendue\n" -" !~ ne correspond PAS à l'expression régulière POSIX " +" == égal\n" +" != non égal\n" +" <= inférieur ou égal\n" +" < inférieur\n" +" >= supérieur ou égal\n" +" > supérieur\n" +" =~ correspond à l'expression régulière POSIX étendue\n" +" !~ ne correspond PAS à l'expression régulière POSIX " "étendue\n" -" =* correspond au masque (le caractère joker \"*\" est " -"autorisé)\n" -" != ne correspond PAS au masque (le caractère joker \"*\" " -"est autorisé)\n" +" ==* correspond au masque, sensible à la casse (le " +"caractère joker \"*\" est autorisé)\n" +" !!* ne correspond PAS au masque, sensible à la casse (le " +"caractère joker \"*\" est autorisé)\n" +" =* correspond au masque, insensible à la casse (le " +"caractère joker \"*\" est autorisé)\n" +" != ne correspond PAS au masque, insensible à la casse (le " +"caractère joker \"*\" est autorisé)\n" +" ==- est inclus, sensible à la casse\n" +" !!- n'est PAS inclus, sensible à la casse\n" +" =- est inclus, insensible à la casse\n" +" !- n'est PAS inclus, insensible à la casse\n" "\n" "Une expression est considérée comme \"vraie\" si elle est non NULL, non " "vide, et différente de \"0\".\n" @@ -1875,7 +1894,8 @@ msgstr "" " /eval -n -c abcd =~ (?-i)^ABC ==> 0\n" " /eval -n -c abcd =~ (?-i)^abc ==> 1\n" " /eval -n -c abcd !~ abc ==> 0\n" -" /eval -n -c abcd =* a*d ==> 1" +" /eval -n -c abcd =* a*d ==> 1\n" +" /eval -n -c abcd =- bc ==> 1" msgid "" "filter messages in buffers, to hide/show them according to tags or regex" diff --git a/po/hu.po b/po/hu.po index f9b4dd29f..b5f6cca50 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: 2020-05-03 16:04+0200\n" +"POT-Creation-Date: 2020-05-05 20:43+0200\n" "PO-Revision-Date: 2020-04-28 16:40+0200\n" "Last-Translator: Andras Voroskoi \n" "Language-Team: weechat-dev \n" @@ -1466,19 +1466,29 @@ msgid "" "replaced (see below); many commands can be separated by semicolons\n" " operator: a logical or comparison operator:\n" " - logical operators:\n" -" && boolean \"and\"\n" -" || boolean \"or\"\n" +" && boolean \"and\"\n" +" || boolean \"or\"\n" " - comparison operators:\n" -" == equal\n" -" != not equal\n" -" <= less or equal\n" -" < less\n" -" >= greater or equal\n" -" > greater\n" -" =~ is matching POSIX extended regex\n" -" !~ is NOT matching POSIX extended regex\n" -" =* is matching mask (wildcard \"*\" is allowed)\n" -" !* is NOT matching mask (wildcard \"*\" is allowed)\n" +" == equal\n" +" != not equal\n" +" <= less or equal\n" +" < less\n" +" >= greater or equal\n" +" > greater\n" +" =~ is matching POSIX extended regex\n" +" !~ is NOT matching POSIX extended regex\n" +" ==* is matching mask, case sensitive (wildcard \"*\" is " +"allowed)\n" +" !!* is NOT matching mask, case sensitive (wildcard \"*\" is " +"allowed)\n" +" =* is matching mask, case insensitive (wildcard \"*\" is " +"allowed)\n" +" !* is NOT matching mask, case insensitive (wildcard \"*\" " +"is allowed)\n" +" ==- is included, case sensitive\n" +" !!- is NOT included, case sensitive\n" +" =- is included, case insensitive\n" +" !- is NOT included, case insensitive\n" "\n" "An expression is considered as \"true\" if it is not NULL, not empty, and " "different from \"0\".\n" @@ -1563,7 +1573,8 @@ msgid "" " /eval -n -c abcd =~ (?-i)^ABC ==> 0\n" " /eval -n -c abcd =~ (?-i)^abc ==> 1\n" " /eval -n -c abcd !~ abc ==> 0\n" -" /eval -n -c abcd =* a*d ==> 1" +" /eval -n -c abcd =* a*d ==> 1\n" +" /eval -n -c abcd =- bc ==> 1" msgstr "" msgid "" diff --git a/po/it.po b/po/it.po index ccf3ff8eb..d7e63bc2b 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: 2020-05-03 16:04+0200\n" +"POT-Creation-Date: 2020-05-05 20:43+0200\n" "PO-Revision-Date: 2020-04-28 16:40+0200\n" "Last-Translator: Esteban I. Ruiz Moreno \n" "Language-Team: weechat-dev \n" @@ -1561,19 +1561,29 @@ msgid "" "replaced (see below); many commands can be separated by semicolons\n" " operator: a logical or comparison operator:\n" " - logical operators:\n" -" && boolean \"and\"\n" -" || boolean \"or\"\n" +" && boolean \"and\"\n" +" || boolean \"or\"\n" " - comparison operators:\n" -" == equal\n" -" != not equal\n" -" <= less or equal\n" -" < less\n" -" >= greater or equal\n" -" > greater\n" -" =~ is matching POSIX extended regex\n" -" !~ is NOT matching POSIX extended regex\n" -" =* is matching mask (wildcard \"*\" is allowed)\n" -" !* is NOT matching mask (wildcard \"*\" is allowed)\n" +" == equal\n" +" != not equal\n" +" <= less or equal\n" +" < less\n" +" >= greater or equal\n" +" > greater\n" +" =~ is matching POSIX extended regex\n" +" !~ is NOT matching POSIX extended regex\n" +" ==* is matching mask, case sensitive (wildcard \"*\" is " +"allowed)\n" +" !!* is NOT matching mask, case sensitive (wildcard \"*\" is " +"allowed)\n" +" =* is matching mask, case insensitive (wildcard \"*\" is " +"allowed)\n" +" !* is NOT matching mask, case insensitive (wildcard \"*\" " +"is allowed)\n" +" ==- is included, case sensitive\n" +" !!- is NOT included, case sensitive\n" +" =- is included, case insensitive\n" +" !- is NOT included, case insensitive\n" "\n" "An expression is considered as \"true\" if it is not NULL, not empty, and " "different from \"0\".\n" @@ -1658,7 +1668,8 @@ msgid "" " /eval -n -c abcd =~ (?-i)^ABC ==> 0\n" " /eval -n -c abcd =~ (?-i)^abc ==> 1\n" " /eval -n -c abcd !~ abc ==> 0\n" -" /eval -n -c abcd =* a*d ==> 1" +" /eval -n -c abcd =* a*d ==> 1\n" +" /eval -n -c abcd =- bc ==> 1" msgstr "" " -n: mostra il risultato senza inviarlo al buffer (modalità debug)\n" "espressione: espressione da analizzare, le variabili con il formato " diff --git a/po/ja.po b/po/ja.po index f86baace5..e5cff833e 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: 2020-05-03 16:04+0200\n" +"POT-Creation-Date: 2020-05-05 20:43+0200\n" "PO-Revision-Date: 2020-04-28 16:40+0200\n" "Last-Translator: AYANOKOUZI, Ryuunosuke \n" "Language-Team: Japanese = greater or equal\n" -" > greater\n" -" =~ is matching POSIX extended regex\n" -" !~ is NOT matching POSIX extended regex\n" -" =* is matching mask (wildcard \"*\" is allowed)\n" -" !* is NOT matching mask (wildcard \"*\" is allowed)\n" +" == equal\n" +" != not equal\n" +" <= less or equal\n" +" < less\n" +" >= greater or equal\n" +" > greater\n" +" =~ is matching POSIX extended regex\n" +" !~ is NOT matching POSIX extended regex\n" +" ==* is matching mask, case sensitive (wildcard \"*\" is " +"allowed)\n" +" !!* is NOT matching mask, case sensitive (wildcard \"*\" is " +"allowed)\n" +" =* is matching mask, case insensitive (wildcard \"*\" is " +"allowed)\n" +" !* is NOT matching mask, case insensitive (wildcard \"*\" " +"is allowed)\n" +" ==- is included, case sensitive\n" +" !!- is NOT included, case sensitive\n" +" =- is included, case insensitive\n" +" !- is NOT included, case insensitive\n" "\n" "An expression is considered as \"true\" if it is not NULL, not empty, and " "different from \"0\".\n" @@ -1713,7 +1723,8 @@ msgid "" " /eval -n -c abcd =~ (?-i)^ABC ==> 0\n" " /eval -n -c abcd =~ (?-i)^abc ==> 1\n" " /eval -n -c abcd !~ abc ==> 0\n" -" /eval -n -c abcd =* a*d ==> 1" +" /eval -n -c abcd =* a*d ==> 1\n" +" /eval -n -c abcd =- bc ==> 1" msgstr "" " -n: 結果をバッファに送信せずに表示 (デバッグモード)\n" " -s: 評価前に式を分割する (複数のコマンドを指定する場合はセミコロンで" diff --git a/po/pl.po b/po/pl.po index 8430902ad..cf6b56a20 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: 2020-05-03 16:04+0200\n" +"POT-Creation-Date: 2020-05-05 20:43+0200\n" "PO-Revision-Date: 2020-04-28 16:40+0200\n" "Last-Translator: Krzysztof Korościk \n" "Language-Team: Polish \n" @@ -1640,6 +1640,7 @@ msgstr "" "[-n|-s] [-d] || [-n] [-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 " @@ -1651,19 +1652,29 @@ msgid "" "replaced (see below); many commands can be separated by semicolons\n" " operator: a logical or comparison operator:\n" " - logical operators:\n" -" && boolean \"and\"\n" -" || boolean \"or\"\n" +" && boolean \"and\"\n" +" || boolean \"or\"\n" " - comparison operators:\n" -" == equal\n" -" != not equal\n" -" <= less or equal\n" -" < less\n" -" >= greater or equal\n" -" > greater\n" -" =~ is matching POSIX extended regex\n" -" !~ is NOT matching POSIX extended regex\n" -" =* is matching mask (wildcard \"*\" is allowed)\n" -" !* is NOT matching mask (wildcard \"*\" is allowed)\n" +" == equal\n" +" != not equal\n" +" <= less or equal\n" +" < less\n" +" >= greater or equal\n" +" > greater\n" +" =~ is matching POSIX extended regex\n" +" !~ is NOT matching POSIX extended regex\n" +" ==* is matching mask, case sensitive (wildcard \"*\" is " +"allowed)\n" +" !!* is NOT matching mask, case sensitive (wildcard \"*\" is " +"allowed)\n" +" =* is matching mask, case insensitive (wildcard \"*\" is " +"allowed)\n" +" !* is NOT matching mask, case insensitive (wildcard \"*\" " +"is allowed)\n" +" ==- is included, case sensitive\n" +" !!- is NOT included, case sensitive\n" +" =- is included, case insensitive\n" +" !- is NOT included, case insensitive\n" "\n" "An expression is considered as \"true\" if it is not NULL, not empty, and " "different from \"0\".\n" @@ -1748,7 +1759,8 @@ msgid "" " /eval -n -c abcd =~ (?-i)^ABC ==> 0\n" " /eval -n -c abcd =~ (?-i)^abc ==> 1\n" " /eval -n -c abcd !~ abc ==> 0\n" -" /eval -n -c abcd =* a*d ==> 1" +" /eval -n -c abcd =* a*d ==> 1\n" +" /eval -n -c abcd =- bc ==> 1" msgstr "" " -n: wyświetla wynik bez wysyłania go do buforu (tryb debugowania)\n" " -s: podziel wyrażenie przed przetworzeniem go (wiele komend może być " diff --git a/po/pt.po b/po/pt.po index 83215878a..82b345620 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: 2020-05-03 16:04+0200\n" +"POT-Creation-Date: 2020-05-05 20:43+0200\n" "PO-Revision-Date: 2020-04-28 16:40+0200\n" "Last-Translator: Vasco Almeida \n" "Language-Team: Portuguese <>\n" @@ -1620,19 +1620,29 @@ msgid "" "replaced (see below); many commands can be separated by semicolons\n" " operator: a logical or comparison operator:\n" " - logical operators:\n" -" && boolean \"and\"\n" -" || boolean \"or\"\n" +" && boolean \"and\"\n" +" || boolean \"or\"\n" " - comparison operators:\n" -" == equal\n" -" != not equal\n" -" <= less or equal\n" -" < less\n" -" >= greater or equal\n" -" > greater\n" -" =~ is matching POSIX extended regex\n" -" !~ is NOT matching POSIX extended regex\n" -" =* is matching mask (wildcard \"*\" is allowed)\n" -" !* is NOT matching mask (wildcard \"*\" is allowed)\n" +" == equal\n" +" != not equal\n" +" <= less or equal\n" +" < less\n" +" >= greater or equal\n" +" > greater\n" +" =~ is matching POSIX extended regex\n" +" !~ is NOT matching POSIX extended regex\n" +" ==* is matching mask, case sensitive (wildcard \"*\" is " +"allowed)\n" +" !!* is NOT matching mask, case sensitive (wildcard \"*\" is " +"allowed)\n" +" =* is matching mask, case insensitive (wildcard \"*\" is " +"allowed)\n" +" !* is NOT matching mask, case insensitive (wildcard \"*\" " +"is allowed)\n" +" ==- is included, case sensitive\n" +" !!- is NOT included, case sensitive\n" +" =- is included, case insensitive\n" +" !- is NOT included, case insensitive\n" "\n" "An expression is considered as \"true\" if it is not NULL, not empty, and " "different from \"0\".\n" @@ -1717,7 +1727,8 @@ msgid "" " /eval -n -c abcd =~ (?-i)^ABC ==> 0\n" " /eval -n -c abcd =~ (?-i)^abc ==> 1\n" " /eval -n -c abcd !~ abc ==> 0\n" -" /eval -n -c abcd =* a*d ==> 1" +" /eval -n -c abcd =* a*d ==> 1\n" +" /eval -n -c abcd =- bc ==> 1" msgstr "" " -n: mostrar resultado sem o enviar para o buffer (modo de depuração)\n" " -s: dividir a expressão antes de a avaliar (pode separar vários " diff --git a/po/pt_BR.po b/po/pt_BR.po index 0a6bf77d1..652ba3665 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: 2020-05-03 16:04+0200\n" +"POT-Creation-Date: 2020-05-05 20:43+0200\n" "PO-Revision-Date: 2020-04-18 11:34+0200\n" "Last-Translator: Eduardo Elias \n" "Language-Team: weechat-dev \n" @@ -1624,19 +1624,29 @@ msgid "" "replaced (see below); many commands can be separated by semicolons\n" " operator: a logical or comparison operator:\n" " - logical operators:\n" -" && boolean \"and\"\n" -" || boolean \"or\"\n" +" && boolean \"and\"\n" +" || boolean \"or\"\n" " - comparison operators:\n" -" == equal\n" -" != not equal\n" -" <= less or equal\n" -" < less\n" -" >= greater or equal\n" -" > greater\n" -" =~ is matching POSIX extended regex\n" -" !~ is NOT matching POSIX extended regex\n" -" =* is matching mask (wildcard \"*\" is allowed)\n" -" !* is NOT matching mask (wildcard \"*\" is allowed)\n" +" == equal\n" +" != not equal\n" +" <= less or equal\n" +" < less\n" +" >= greater or equal\n" +" > greater\n" +" =~ is matching POSIX extended regex\n" +" !~ is NOT matching POSIX extended regex\n" +" ==* is matching mask, case sensitive (wildcard \"*\" is " +"allowed)\n" +" !!* is NOT matching mask, case sensitive (wildcard \"*\" is " +"allowed)\n" +" =* is matching mask, case insensitive (wildcard \"*\" is " +"allowed)\n" +" !* is NOT matching mask, case insensitive (wildcard \"*\" " +"is allowed)\n" +" ==- is included, case sensitive\n" +" !!- is NOT included, case sensitive\n" +" =- is included, case insensitive\n" +" !- is NOT included, case insensitive\n" "\n" "An expression is considered as \"true\" if it is not NULL, not empty, and " "different from \"0\".\n" @@ -1721,7 +1731,8 @@ msgid "" " /eval -n -c abcd =~ (?-i)^ABC ==> 0\n" " /eval -n -c abcd =~ (?-i)^abc ==> 1\n" " /eval -n -c abcd !~ abc ==> 0\n" -" /eval -n -c abcd =* a*d ==> 1" +" /eval -n -c abcd =* a*d ==> 1\n" +" /eval -n -c abcd =- bc ==> 1" msgstr "" msgid "" diff --git a/po/ru.po b/po/ru.po index 86e706da7..caf5c5098 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: 2020-05-03 16:04+0200\n" +"POT-Creation-Date: 2020-05-05 20:43+0200\n" "PO-Revision-Date: 2020-04-28 16:40+0200\n" "Last-Translator: Aleksey V Zapparov AKA ixti \n" "Language-Team: weechat-dev \n" @@ -1488,19 +1488,29 @@ msgid "" "replaced (see below); many commands can be separated by semicolons\n" " operator: a logical or comparison operator:\n" " - logical operators:\n" -" && boolean \"and\"\n" -" || boolean \"or\"\n" +" && boolean \"and\"\n" +" || boolean \"or\"\n" " - comparison operators:\n" -" == equal\n" -" != not equal\n" -" <= less or equal\n" -" < less\n" -" >= greater or equal\n" -" > greater\n" -" =~ is matching POSIX extended regex\n" -" !~ is NOT matching POSIX extended regex\n" -" =* is matching mask (wildcard \"*\" is allowed)\n" -" !* is NOT matching mask (wildcard \"*\" is allowed)\n" +" == equal\n" +" != not equal\n" +" <= less or equal\n" +" < less\n" +" >= greater or equal\n" +" > greater\n" +" =~ is matching POSIX extended regex\n" +" !~ is NOT matching POSIX extended regex\n" +" ==* is matching mask, case sensitive (wildcard \"*\" is " +"allowed)\n" +" !!* is NOT matching mask, case sensitive (wildcard \"*\" is " +"allowed)\n" +" =* is matching mask, case insensitive (wildcard \"*\" is " +"allowed)\n" +" !* is NOT matching mask, case insensitive (wildcard \"*\" " +"is allowed)\n" +" ==- is included, case sensitive\n" +" !!- is NOT included, case sensitive\n" +" =- is included, case insensitive\n" +" !- is NOT included, case insensitive\n" "\n" "An expression is considered as \"true\" if it is not NULL, not empty, and " "different from \"0\".\n" @@ -1585,7 +1595,8 @@ msgid "" " /eval -n -c abcd =~ (?-i)^ABC ==> 0\n" " /eval -n -c abcd =~ (?-i)^abc ==> 1\n" " /eval -n -c abcd !~ abc ==> 0\n" -" /eval -n -c abcd =* a*d ==> 1" +" /eval -n -c abcd =* a*d ==> 1\n" +" /eval -n -c abcd =- bc ==> 1" msgstr "" msgid "" diff --git a/po/tr.po b/po/tr.po index 07aba208b..d859c9885 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: 2020-05-03 16:04+0200\n" +"POT-Creation-Date: 2020-05-05 20:43+0200\n" "PO-Revision-Date: 2019-11-03 08:38+0100\n" "Last-Translator: Hasan Kiran \n" "Language-Team: weechat-dev \n" @@ -1319,19 +1319,29 @@ msgid "" "replaced (see below); many commands can be separated by semicolons\n" " operator: a logical or comparison operator:\n" " - logical operators:\n" -" && boolean \"and\"\n" -" || boolean \"or\"\n" +" && boolean \"and\"\n" +" || boolean \"or\"\n" " - comparison operators:\n" -" == equal\n" -" != not equal\n" -" <= less or equal\n" -" < less\n" -" >= greater or equal\n" -" > greater\n" -" =~ is matching POSIX extended regex\n" -" !~ is NOT matching POSIX extended regex\n" -" =* is matching mask (wildcard \"*\" is allowed)\n" -" !* is NOT matching mask (wildcard \"*\" is allowed)\n" +" == equal\n" +" != not equal\n" +" <= less or equal\n" +" < less\n" +" >= greater or equal\n" +" > greater\n" +" =~ is matching POSIX extended regex\n" +" !~ is NOT matching POSIX extended regex\n" +" ==* is matching mask, case sensitive (wildcard \"*\" is " +"allowed)\n" +" !!* is NOT matching mask, case sensitive (wildcard \"*\" is " +"allowed)\n" +" =* is matching mask, case insensitive (wildcard \"*\" is " +"allowed)\n" +" !* is NOT matching mask, case insensitive (wildcard \"*\" " +"is allowed)\n" +" ==- is included, case sensitive\n" +" !!- is NOT included, case sensitive\n" +" =- is included, case insensitive\n" +" !- is NOT included, case insensitive\n" "\n" "An expression is considered as \"true\" if it is not NULL, not empty, and " "different from \"0\".\n" @@ -1416,7 +1426,8 @@ msgid "" " /eval -n -c abcd =~ (?-i)^ABC ==> 0\n" " /eval -n -c abcd =~ (?-i)^abc ==> 1\n" " /eval -n -c abcd !~ abc ==> 0\n" -" /eval -n -c abcd =* a*d ==> 1" +" /eval -n -c abcd =* a*d ==> 1\n" +" /eval -n -c abcd =- bc ==> 1" msgstr "" msgid "" diff --git a/po/weechat.pot b/po/weechat.pot index 1602a3ceb..f134a3e0d 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: 2020-05-03 16:04+0200\n" +"POT-Creation-Date: 2020-05-05 20:43+0200\n" "PO-Revision-Date: 2014-08-16 10:27+0200\n" "Last-Translator: Sébastien Helleu \n" "Language-Team: weechat-dev \n" @@ -1321,19 +1321,29 @@ msgid "" "replaced (see below); many commands can be separated by semicolons\n" " operator: a logical or comparison operator:\n" " - logical operators:\n" -" && boolean \"and\"\n" -" || boolean \"or\"\n" +" && boolean \"and\"\n" +" || boolean \"or\"\n" " - comparison operators:\n" -" == equal\n" -" != not equal\n" -" <= less or equal\n" -" < less\n" -" >= greater or equal\n" -" > greater\n" -" =~ is matching POSIX extended regex\n" -" !~ is NOT matching POSIX extended regex\n" -" =* is matching mask (wildcard \"*\" is allowed)\n" -" !* is NOT matching mask (wildcard \"*\" is allowed)\n" +" == equal\n" +" != not equal\n" +" <= less or equal\n" +" < less\n" +" >= greater or equal\n" +" > greater\n" +" =~ is matching POSIX extended regex\n" +" !~ is NOT matching POSIX extended regex\n" +" ==* is matching mask, case sensitive (wildcard \"*\" is " +"allowed)\n" +" !!* is NOT matching mask, case sensitive (wildcard \"*\" is " +"allowed)\n" +" =* is matching mask, case insensitive (wildcard \"*\" is " +"allowed)\n" +" !* is NOT matching mask, case insensitive (wildcard \"*\" " +"is allowed)\n" +" ==- is included, case sensitive\n" +" !!- is NOT included, case sensitive\n" +" =- is included, case insensitive\n" +" !- is NOT included, case insensitive\n" "\n" "An expression is considered as \"true\" if it is not NULL, not empty, and " "different from \"0\".\n" @@ -1418,7 +1428,8 @@ msgid "" " /eval -n -c abcd =~ (?-i)^ABC ==> 0\n" " /eval -n -c abcd =~ (?-i)^abc ==> 1\n" " /eval -n -c abcd !~ abc ==> 0\n" -" /eval -n -c abcd =* a*d ==> 1" +" /eval -n -c abcd =* a*d ==> 1\n" +" /eval -n -c abcd =- bc ==> 1" msgstr "" msgid "" diff --git a/src/core/wee-command.c b/src/core/wee-command.c index 165351908..3b3e6d438 100644 --- a/src/core/wee-command.c +++ b/src/core/wee-command.c @@ -7364,19 +7364,29 @@ command_init () "separated by semicolons\n" " operator: a logical or comparison operator:\n" " - logical operators:\n" - " && boolean \"and\"\n" - " || boolean \"or\"\n" + " && boolean \"and\"\n" + " || boolean \"or\"\n" " - comparison operators:\n" - " == equal\n" - " != not equal\n" - " <= less or equal\n" - " < less\n" - " >= greater or equal\n" - " > greater\n" - " =~ is matching POSIX extended regex\n" - " !~ is NOT matching POSIX extended regex\n" - " =* is matching mask (wildcard \"*\" is allowed)\n" - " !* is NOT matching mask (wildcard \"*\" is allowed)\n" + " == equal\n" + " != not equal\n" + " <= less or equal\n" + " < less\n" + " >= greater or equal\n" + " > greater\n" + " =~ is matching POSIX extended regex\n" + " !~ is NOT matching POSIX extended regex\n" + " ==* is matching mask, case sensitive " + "(wildcard \"*\" is allowed)\n" + " !!* is NOT matching mask, case sensitive " + "(wildcard \"*\" is allowed)\n" + " =* is matching mask, case insensitive " + "(wildcard \"*\" is allowed)\n" + " !* is NOT matching mask, case insensitive " + "(wildcard \"*\" is allowed)\n" + " ==- is included, case sensitive\n" + " !!- is NOT included, case sensitive\n" + " =- is included, case insensitive\n" + " !- is NOT included, case insensitive\n" "\n" "An expression is considered as \"true\" if it is not NULL, not " "empty, and different from \"0\".\n" @@ -7465,7 +7475,8 @@ command_init () " /eval -n -c abcd =~ (?-i)^ABC ==> 0\n" " /eval -n -c abcd =~ (?-i)^abc ==> 1\n" " /eval -n -c abcd !~ abc ==> 0\n" - " /eval -n -c abcd =* a*d ==> 1"), + " /eval -n -c abcd =* a*d ==> 1\n" + " /eval -n -c abcd =- bc ==> 1"), "-n|-s|-c -n|-s|-c", &command_eval, NULL, NULL); hook_command ( diff --git a/src/core/wee-eval.c b/src/core/wee-eval.c index 7ca93360a..e30f944fe 100644 --- a/src/core/wee-eval.c +++ b/src/core/wee-eval.c @@ -54,7 +54,12 @@ char *logical_ops[EVAL_NUM_LOGICAL_OPS] = { "||", "&&" }; char *comparisons[EVAL_NUM_COMPARISONS] = -{ "=~", "!~", "=*", "!*", "==", "!=", "<=", "<", ">=", ">" }; +{ "=~", "!~", /* regex */ + "==*", "!!*", "=*", "!*", /* string match */ + "==-", "!!-", "=-", "!-", /* includes */ + "==", "!=", /* equal, not equal */ + "<=", "<", ">=", ">", /* less than, greater than */ +}; char *eval_replace_vars (const char *expr, @@ -934,6 +939,14 @@ eval_compare (const char *expr1, int comparison, const char *expr2, rc ^= 1; goto end; } + else if ((comparison == EVAL_COMPARE_STRING_MATCHING_CASE_SENSITIVE) + || (comparison == EVAL_COMPARE_STRING_NOT_MATCHING_CASE_SENSITIVE)) + { + rc = string_match (expr1, expr2, 1); + if (comparison == EVAL_COMPARE_STRING_NOT_MATCHING_CASE_SENSITIVE) + rc ^= 1; + goto end; + } else if ((comparison == EVAL_COMPARE_STRING_MATCHING) || (comparison == EVAL_COMPARE_STRING_NOT_MATCHING)) { @@ -942,6 +955,22 @@ eval_compare (const char *expr1, int comparison, const char *expr2, rc ^= 1; goto end; } + else if ((comparison == EVAL_COMPARE_INCLUDE_CASE_SENSITIVE) + || (comparison == EVAL_COMPARE_NOT_INCLUDE_CASE_SENSITIVE)) + { + rc = (strstr (expr1, expr2)) ? 1 : 0; + if (comparison == EVAL_COMPARE_NOT_INCLUDE_CASE_SENSITIVE) + rc ^= 1; + goto end; + } + else if ((comparison == EVAL_COMPARE_INCLUDE) + || (comparison == EVAL_COMPARE_NOT_INCLUDE)) + { + rc = (string_strcasestr (expr1, expr2)) ? 1 : 0; + if (comparison == EVAL_COMPARE_NOT_INCLUDE) + rc ^= 1; + goto end; + } length1 = strlen (expr1); length2 = strlen (expr2); diff --git a/src/core/wee-eval.h b/src/core/wee-eval.h index 4ee631712..8ce5a5e22 100644 --- a/src/core/wee-eval.h +++ b/src/core/wee-eval.h @@ -44,8 +44,14 @@ enum t_eval_comparison { EVAL_COMPARE_REGEX_MATCHING = 0, EVAL_COMPARE_REGEX_NOT_MATCHING, + EVAL_COMPARE_STRING_MATCHING_CASE_SENSITIVE, + EVAL_COMPARE_STRING_NOT_MATCHING_CASE_SENSITIVE, EVAL_COMPARE_STRING_MATCHING, EVAL_COMPARE_STRING_NOT_MATCHING, + EVAL_COMPARE_INCLUDE_CASE_SENSITIVE, + EVAL_COMPARE_NOT_INCLUDE_CASE_SENSITIVE, + EVAL_COMPARE_INCLUDE, + EVAL_COMPARE_NOT_INCLUDE, EVAL_COMPARE_EQUAL, EVAL_COMPARE_NOT_EQUAL, EVAL_COMPARE_LESS_EQUAL, diff --git a/tests/unit/core/test-core-eval.cpp b/tests/unit/core/test-core-eval.cpp index 6ee950112..a74d8ee96 100644 --- a/tests/unit/core/test-core-eval.cpp +++ b/tests/unit/core/test-core-eval.cpp @@ -146,10 +146,25 @@ TEST(CoreEval, EvalCondition) WEE_CHECK_EVAL("0", "abcd !~ ^ABC"); WEE_CHECK_EVAL("0", "abcd !~ (?-i)^abc"); WEE_CHECK_EVAL("0", "abcd!~abc"); + WEE_CHECK_EVAL("0", "abcd ==* abce"); + WEE_CHECK_EVAL("0", "abcd ==* ABCD"); + WEE_CHECK_EVAL("0", "abcd ==* a*e"); + WEE_CHECK_EVAL("0", "abcd ==* A*E"); + WEE_CHECK_EVAL("0", "abcd !!* *bc*"); + WEE_CHECK_EVAL("0", "abcd !!* *"); WEE_CHECK_EVAL("0", "abcd =* abce"); WEE_CHECK_EVAL("0", "abcd =* a*e"); + WEE_CHECK_EVAL("0", "abcd =* A*E"); WEE_CHECK_EVAL("0", "abcd !* *bc*"); + WEE_CHECK_EVAL("0", "abcd !* *BC*"); WEE_CHECK_EVAL("0", "abcd !* *"); + WEE_CHECK_EVAL("0", "abcd ==- abce"); + WEE_CHECK_EVAL("0", "abcd ==- ABCD"); + WEE_CHECK_EVAL("0", "abcd ==- BC"); + WEE_CHECK_EVAL("0", "abcd !!- bc"); + WEE_CHECK_EVAL("0", "abcd =- abce"); + WEE_CHECK_EVAL("0", "abcd !- bc"); + WEE_CHECK_EVAL("0", "abcd !- BC"); WEE_CHECK_EVAL("0", "${test} == test"); WEE_CHECK_EVAL("0", "${test2} == value2"); WEE_CHECK_EVAL("0", "${buffer.number} == 2"); @@ -215,10 +230,26 @@ TEST(CoreEval, EvalCondition) WEE_CHECK_EVAL("1", "abcd !~ (?-i)^ABC"); WEE_CHECK_EVAL("1", "abcd !~ \\(abcd\\)"); WEE_CHECK_EVAL("1", "!~abcd"); + WEE_CHECK_EVAL("1", "abcd !!* abce"); + WEE_CHECK_EVAL("1", "abcd !!* ABCD"); + WEE_CHECK_EVAL("1", "abcd !!* a*e"); + WEE_CHECK_EVAL("1", "abcd !!* A*E"); + WEE_CHECK_EVAL("1", "abcd !!* *BC*"); + WEE_CHECK_EVAL("1", "abcd ==* *bc*"); + WEE_CHECK_EVAL("1", "abcd ==* *"); WEE_CHECK_EVAL("1", "abcd !* abce"); WEE_CHECK_EVAL("1", "abcd !* a*e"); + WEE_CHECK_EVAL("1", "abcd !* A*E"); WEE_CHECK_EVAL("1", "abcd =* *bc*"); + WEE_CHECK_EVAL("1", "abcd =* *BC*"); WEE_CHECK_EVAL("1", "abcd =* *"); + WEE_CHECK_EVAL("1", "abcd !!- abce"); + WEE_CHECK_EVAL("1", "abcd !!- ABCD"); + WEE_CHECK_EVAL("1", "abcd !!- BC"); + WEE_CHECK_EVAL("1", "abcd ==- bc"); + WEE_CHECK_EVAL("1", "abcd !- abce"); + WEE_CHECK_EVAL("1", "abcd =- bc"); + WEE_CHECK_EVAL("1", "abcd =- BC"); WEE_CHECK_EVAL("1", "${test} == value"); WEE_CHECK_EVAL("1", "${test2} =="); WEE_CHECK_EVAL("1", "${buffer.number} == 1"); @@ -255,8 +286,14 @@ TEST(CoreEval, EvalCondition) "eval_strstr_level(\"abc < def\", \"&&\", \"(\", \")\", 0)\n" "eval_strstr_level(\"abc < def\", \"=~\", \"(\", \")\", 0)\n" "eval_strstr_level(\"abc < def\", \"!~\", \"(\", \")\", 0)\n" + "eval_strstr_level(\"abc < def\", \"==*\", \"(\", \")\", 0)\n" + "eval_strstr_level(\"abc < def\", \"!!*\", \"(\", \")\", 0)\n" "eval_strstr_level(\"abc < def\", \"=*\", \"(\", \")\", 0)\n" "eval_strstr_level(\"abc < def\", \"!*\", \"(\", \")\", 0)\n" + "eval_strstr_level(\"abc < def\", \"==-\", \"(\", \")\", 0)\n" + "eval_strstr_level(\"abc < def\", \"!!-\", \"(\", \")\", 0)\n" + "eval_strstr_level(\"abc < def\", \"=-\", \"(\", \")\", 0)\n" + "eval_strstr_level(\"abc < def\", \"!-\", \"(\", \")\", 0)\n" "eval_strstr_level(\"abc < def\", \"==\", \"(\", \")\", 0)\n" "eval_strstr_level(\"abc < def\", \"!=\", \"(\", \")\", 0)\n" "eval_strstr_level(\"abc < def\", \"<=\", \"(\", \")\", 0)\n" @@ -266,8 +303,14 @@ TEST(CoreEval, EvalCondition) "eval_strstr_level(\"abc\", \"&&\", \"(\", \")\", 0)\n" "eval_strstr_level(\"abc\", \"=~\", \"(\", \")\", 0)\n" "eval_strstr_level(\"abc\", \"!~\", \"(\", \")\", 0)\n" + "eval_strstr_level(\"abc\", \"==*\", \"(\", \")\", 0)\n" + "eval_strstr_level(\"abc\", \"!!*\", \"(\", \")\", 0)\n" "eval_strstr_level(\"abc\", \"=*\", \"(\", \")\", 0)\n" "eval_strstr_level(\"abc\", \"!*\", \"(\", \")\", 0)\n" + "eval_strstr_level(\"abc\", \"==-\", \"(\", \")\", 0)\n" + "eval_strstr_level(\"abc\", \"!!-\", \"(\", \")\", 0)\n" + "eval_strstr_level(\"abc\", \"=-\", \"(\", \")\", 0)\n" + "eval_strstr_level(\"abc\", \"!-\", \"(\", \")\", 0)\n" "eval_strstr_level(\"abc\", \"==\", \"(\", \")\", 0)\n" "eval_strstr_level(\"abc\", \"!=\", \"(\", \")\", 0)\n" "eval_strstr_level(\"abc\", \"<=\", \"(\", \")\", 0)\n" @@ -280,8 +323,14 @@ TEST(CoreEval, EvalCondition) "eval_strstr_level(\"def\", \"&&\", \"(\", \")\", 0)\n" "eval_strstr_level(\"def\", \"=~\", \"(\", \")\", 0)\n" "eval_strstr_level(\"def\", \"!~\", \"(\", \")\", 0)\n" + "eval_strstr_level(\"def\", \"==*\", \"(\", \")\", 0)\n" + "eval_strstr_level(\"def\", \"!!*\", \"(\", \")\", 0)\n" "eval_strstr_level(\"def\", \"=*\", \"(\", \")\", 0)\n" "eval_strstr_level(\"def\", \"!*\", \"(\", \")\", 0)\n" + "eval_strstr_level(\"def\", \"==-\", \"(\", \")\", 0)\n" + "eval_strstr_level(\"def\", \"!!-\", \"(\", \")\", 0)\n" + "eval_strstr_level(\"def\", \"=-\", \"(\", \")\", 0)\n" + "eval_strstr_level(\"def\", \"!-\", \"(\", \")\", 0)\n" "eval_strstr_level(\"def\", \"==\", \"(\", \")\", 0)\n" "eval_strstr_level(\"def\", \"!=\", \"(\", \")\", 0)\n" "eval_strstr_level(\"def\", \"<=\", \"(\", \")\", 0)\n"