HTTPMOD: JavaScript Fehler wegen data-pattern mit (?<...) in der HTTPMOD Doku

Begonnen von rudolfkoenig, 19 April 2022, 08:57:51

Vorheriges Thema - Nächstes Thema

rudolfkoenig

Nach Analyse der Meldung hier: https://forum.fhem.de/index.php?topic=127346 bin ich der Ansicht, dass die Ursache eine fehlerhafte data-pattern-Regexp in der HTTPMOD Doku ist.

Kurz: unter Safari erzeugt sowas wie
data-pattern=".?(get|set|reading).*(?<![ldDh])Regex"
einen Fehler, weil (?<...>) die Syntax fuer "Named capturing group" ist, siehe https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions/Groups_and_Ranges

StefanStrobel

Schade. Ich war froh, mit einem ,,negative look behind" einen Weg gefunden zu haben, der scheinbar funktioniert hat.
Ich wollte das data pattern so bilden, dass es sowohl auf die Ausprägungen von Regex-Attributen als auch auf das regex-Attribut als Regex aus der Attributliste passt.
Und dann muss noch der Unterschied zwischen get01Regex, get01IdRegex und get01ReAuthRegex erkannt werden.
Hat jemand eine gute Idee?

Gruß
     Stefan

rudolfkoenig

ZitatIch wollte das data pattern so bilden, dass es sowohl auf die Ausprägungen von Regex-Attributen als auch auf das regex-Attribut als Regex aus der Attributliste passt.
Das ist loeblich, aber dann kann man auch ein "lesbares" id vergeben :)

Falls mit id nichts gefunden hat, prueft fhemweb.js von vorne nach hinten alle data-pattern Eintraege.
Z.Zt. ohne Abbruch, d.h. es wird der letzte passende Eintrag verwendet.
Das habe ich jetzt "gefixt", ab sofort wird der erste Eintrag verwendet.
Ich meine damit kann man das Problem ohne "negative look behind" durch etwas umsortieren der Eintraege loesen.

Bin nicht sicher, ob es bekannt ist:
- bei der ID-Suche wird [^a-zA-Z0-9_-]/ nach _ konvertiert (sonst steigt jQuery aus).
- bei der data-pattern Suche wird das nicht gemacht, und data-pattern so wie es ist verwendet, d.h. nicht mit ^ und $ ergaenzt.

StefanStrobel

Vielen Dank, das klingt hilfreich.

Da ich gerade nur sehr eingeschränkten Zugriff auf mein Test-System habe, hab ich erst mal die alte Version wieder eingecheckt.

Gruß
    Stefan

betateilchen

Gerade getestet, mit der aktuellen Version von HTTPMOD scheint das Problem behoben zu sein, bei mir tauchen keine Fehlermeldungen mehr auf.

Danke!
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!