[Wish] Makros: non-breaking-space fangen

  • Testfall:

    1. Maileditor starten
    2. im Editor UTF-8 einstellen
    3. Im Betreff folgendes tippen A:<Strg+Shift+Leerzeichen>Test - das ergibt ein Non-Breaking-Space
    4. Als Entwurf speichern
    5. Im Quellcode hat der Betreff dann Subject: =?utf-8?Q?A:=C2=A0Test?=
    6. Konten-Unterordner TEST erzeugen
    7. Dort eine Antwortvorlage (Nur-text) erstellen mit folgendem Makro:
      Hier sollte dann was folgen
      %SETPATTREGEXP='(?i)(A:\s+Test)'%-
      %REGEXPMATCH='%OSUBJ'%-
      %SUBPATT="1"%-
    8. Das Mail nach TEST verschieben
    9. Auf das Mail antworten

    In der Antwort müsste stehen
    Hier sollte dann was folgen
    A: Test

    The Bat! Pro 11.x BETA (32bit) | Win 11 Pro x64 | GnuPG 2.4.x | XMP + Regula

    Wer mich Er oder der Drache nennt, bekommt von der Drachin Pratze und Feuer zu spüren.

    Einmal editiert, zuletzt von GwenDragon (21. Mai 2024 um 15:54)

  • Ist laut The Bat!-Entwickler kein Bug, da ein Non-Breaking-Space eben kein Leerzeichen ist.

    The Bat! Pro 11.x BETA (32bit) | Win 11 Pro x64 | GnuPG 2.4.x | XMP + Regula

    Wer mich Er oder der Drache nennt, bekommt von der Drachin Pratze und Feuer zu spüren.

  • In der Antwort müsste stehen
    Hier sollte dann was folgen
    A: Test

    Ein Bug?

    Nein, eher ein Feature bezüglich regulärer Ausdrücke. "\s" sucht nach einem White-Space im
    Roh-Text! Dieses wird "\s" aber nicht finden, da das NBS mit "qp" als "=C2=A0" (UTF-8) bzw. "=A0" (Ansi) dargestellt wird. Würdest du (Abhängig von der Kodierung) also nach "=C2=A0" oder "=A0" suchen lassen, so würde dein Vorhaben auch gelingen!

    Gruß ThoBa
    Win11 PRO; TheBat! PRO 11.x; GPG4Win 4.3.x

  • ThoBa War halt meine Fehlinterpretation, dass \s das fängt. Und The Bat! MAkros sind so gewähnungsbedürftig, ist leider weder Python noch Perls PCRE.

    Das Beispiel oben sollte ein Testcase sein, weil ich im Forum helfen wollte, dass ein Fragender solche NBSP entfernt bekommt.

    The Bat! Pro 11.x BETA (32bit) | Win 11 Pro x64 | GnuPG 2.4.x | XMP + Regula

    Wer mich Er oder der Drache nennt, bekommt von der Drachin Pratze und Feuer zu spüren.

  • Das Beispiel oben sollte ein Testcase sein, weil ich im Forum helfen wollte, dass ein Fragender solche NBSP entfernt bekommt.

    Nun, das wird schwierig. Die Problematik liegt in den vielfachen Kodierungsmöglichkeiten des Subjects. Stelle dir einmal vor, dass das Subject "base64"-kodiert ist. In jenem Fall hast du mit PCRE gar keine Chance mehr.
    Dein Lösungsansatz "erschlägt" nur die Subjekte, welche 8bit-kodiert sind. Aber immerhin! :)

    Edit: Wie dann ein NBSP ausschaut? Wahrscheinlich so: "_", "\s" hätte auch hier keine Chance etwas zu finden.

    Gruß ThoBa
    Win11 PRO; TheBat! PRO 11.x; GPG4Win 4.3.x

    Einmal editiert, zuletzt von ThoBa (21. Mai 2024 um 12:45)

  • Ist laut The Bat!-Entwickler kein Bug

    Gibt's einen BT-Eintrag dazu oder wurde das intern kommuniziert? (s.u.)


    Stelle dir einmal vor

    Wie bereits gesagt, ging es damals um einen konkreten Fall mit einem konkreten MUA und konkreten Nachrichten. Man brauchte sich also nichts vorzustellen, da alles bekannt war. Und eben für diesen konkreten Fall wurde dieser Workaround erarbeitet. Er musste also nur in diesem konkreten Fall funktionieren.

    Einmal editiert, zuletzt von sanyok (21. Mai 2024 um 14:14) aus folgendem Grund: Ersten Satz bearbeitet.

  • Habe den jetzt selbst gefunden:

    Entschuldige, mein Fehler; ich hatte den Hinweis auf den Ritlabs BT gelöscht, weil ich nun der Meinung war, es ist kein Bug, also nutzlos das weiter zu melden. Und ich habe stef gebeten den Bug zu schließen.

    The Bat! Pro 11.x BETA (32bit) | Win 11 Pro x64 | GnuPG 2.4.x | XMP + Regula

    Wer mich Er oder der Drache nennt, bekommt von der Drachin Pratze und Feuer zu spüren.

  • Dein Lösungsansatz "erschlägt" nur die Subjekte, welche 8bit-kodiert sind.

    Seit wann liefert %OSUBJ nicht mehr den dekodierte Mail-Header Subject. Dann wären The Bat!s Makros ja sinnlos. ;)

    The Bat! Pro 11.x BETA (32bit) | Win 11 Pro x64 | GnuPG 2.4.x | XMP + Regula

    Wer mich Er oder der Drache nennt, bekommt von der Drachin Pratze und Feuer zu spüren.

  • es ist kein Bug,

    Man könnte durchaus daraus einen Wish machen, anstatt den Eintrag komplett zu schließen.

    Stefan Tanurkov ging wohl in der Tat davon aus, dass das Zeichen in The Bat! verwendet wurde und schreibt daher, dass es nicht empfehlenswert sei. Hier geht's aber vielmehr darum, dass man es nicht selbst tut, sondern eine Nachricht mit so einem Zeichen in The Bat! empfängt und ob The Bat! imstande ist oder sein soll, es zu entfernen.

    Ich habe jedenfalls den Eintrag ergänzt. Mal sehen, ob er noch dazu Stellung nimmt.

  • Non-Breaking-Space (Unicode C2A0 oder Hex A0) wird bei PCRE (regex) gefangen mit \h (für horizontal whitespace).

    Zitat

    The sequences \h, \H, \v, and \V are features that were added to Perl at release 5.10. In contrast to the other sequences, which match only ASCII characters by default, these always match certain high-valued code points, whether or not PCRE_UCP is set. The horizontal space characters are:

    Code
      U+0009     Horizontal tab (HT)
      U+0020     Space
      U+00A0     Non-break space

    https://pcre.org/original/doc/html/pcrepattern.html#SEC5

    Und

    Vielleicht klappt es so als Regex mit [\s\h]
    Ob das mit The Bat!s Makro läuft muss ich mal später testen.

    //EDIT:
    Getestet mit

    %SETPATTREGEXP='(?i)(A:\h+Test)'%-
    %REGEXPMATCH='%OSUBJ'%-
    %SUBPATT="1"%-
    %SUBPATT

    und

    %SETPATTREGEXP='(?i)(A:\hTest)'%-
    %REGEXPMATCH='%OSUBJ'%-
    %SUBPATT="1"%-
    %SUBPATT

    und

    %SETPATTREGEXP='(?i)(A:[\h\s]+Test)'%-
    %REGEXPMATCH='%OSUBJ'%-
    %SUBPATT="1"%-
    %SUBPATT

    Nein, \h fängt in The Bats Implementation bei Regex nicht.

    In der alten CHM-Hilfe steht aber dass Regex in Makros PCRE ist. Ist wohl bei The Bat! ein eingeschränkte Implementation.

    Ich bin zu verwöhnt von Perl, dem PCRE-Standard und anderen Sprachen.

    The Bat! Pro 11.x BETA (32bit) | Win 11 Pro x64 | GnuPG 2.4.x | XMP + Regula

    Wer mich Er oder der Drache nennt, bekommt von der Drachin Pratze und Feuer zu spüren.

    6 Mal editiert, zuletzt von GwenDragon (21. Mai 2024 um 16:03)

  • Wie bereits gesagt, ging es damals um einen konkreten Fall mit einem konkreten MUA und konkreten Nachrichten. Man brauchte sich also nichts vorzustellen, da alles bekannt war. Und eben für diesen konkreten Fall wurde dieser Workaround erarbeitet. Er musste also nur in diesem konkreten Fall funktionieren.

    Das war bzw. ist mir schon klar. ;) Was GwenDragon bezüglich des Problems "versucht" hatte, das war auch absolut in Ordnung und verständlich. Nur diese Problematik wird es immer wieder einmal in den unterschiedlichsten "Formen" (Kodierungen) geben.

    Was TB! in solch einem Moment benötigt, das ist eine "Dekodier-Routine", was vor der Verwendung von PCRE das Subject (oder auch jeden anderen zu bearbeitenden String) auf den Standardzeichensatz "windows-1252" dekodiert. Danach hätte PCRE "Freie Fahrt". Auch könnte man dann gezielte (PCRE)-Makros für immer wiederkehrende Situationen schreiben.

    Es wäre also nicht verkehrt, wenn man die Entwickler auf solch eine benötigte Standard-Routine
    "scharf" macht.

    Andere Mail-Programme bieten in Zusammenhang mit Makros solche Dekodier-Routinen an.
    Als Beispiel sei hier die Routine "DecodeMimeHeader" genannt, die ein Subject von der Transportkodierung befreit und gleichzeitig dekodiert und wieder lesbar macht (siehe b64-Kodierung).

    Gruß ThoBa
    Win11 PRO; TheBat! PRO 11.x; GPG4Win 4.3.x

  • Was TB! in solch einem Moment benötigt, das ist eine "Dekodier-Routine", was vor der Verwendung von PCRE das Subject (oder auch jeden anderen zu bearbeitenden String) auf den Standardzeichensatz "windows-1252" dekodiert.

    Ich wieder hole mich ungern, aber %OSUBJ liefert den dekodierten String als Unicode.

    The Bat! Pro 11.x BETA (32bit) | Win 11 Pro x64 | GnuPG 2.4.x | XMP + Regula

    Wer mich Er oder der Drache nennt, bekommt von der Drachin Pratze und Feuer zu spüren.