[FTUI 3] Regex in map() binding

Begonnen von Guybrush, 18 August 2022, 11:11:09

Vorheriges Thema - Nächstes Thema

Guybrush

Ich hab das Problem, dass meine Regex nicht escaped wird.


<ftui-icon [name]="Garage.Dachfenster.Tor | map('`100\\s\\(.*`:fts_light_dome_open, .*:fts_light_dome') | prepend('../../images/openautomation/')"></ftui-icon>


hier würde ich erwarten, dass die regex auf den string "100 (0-100) stop" greift. Tut sie aber nicht. Stattdessen wird ein Fehler "unterminated group" geworfen. Das liegt daran, dass der die Klammer nicht escaped, obwohl das ja gesetzt ist. Mache ich das ganze direkt in Javascript, geht es aber..


var str = '100 (0-100) stop';
var regex = new RegExp('100\\s\\(.*');
console.log(regex.test(str));
// liefert true


hab auch mal mehrfaches escaping probiert, aber laut debug wird sowohl aus "\\(" als auch "\\\(" oder "\\\\(" immer nur "(". Interessant ist, dass aus der regex "100\\s\\(.*" in der Fehlermeldung "^100s(.*$" wird. Das ist aber falsch, da "s" und "(" escaped werden müssen. Hab ich da ein Brett vorm Kopf oder woran liegt das? Sieht für mich fast so aus, als wenn da die \ pauschal ersetzt werden?

OdfFhem

@Guybrush


map('100\\s\\(.*:fts_light_dome_open, .*:fts_light_dome')


"100 (0-100) stop" liefert fts_light_dome_open
"99 (0-100) stop" liefert fts_light_dome

Guybrush

das ist richtig! darum gehts aber ja gerade nicht. Ich muss ja überhaupt erstmal Sonderzeichen \s oder \( hinbekommen. Hab jetzt zwar eine andere Regex genommen, aber damit kann ich nicht alles umsetzen, weils eben auch auf die Klammern ankommt. Soweit ich das debugt habe, liegt das aber an der Art und Weise wie das hocon.js Modul eingebunden ist. Dort wird es scheinbar immer escaped, wenn das Pattern nicht in "" gequotet ist, was aber nicht gesetzt werden kann wegen der FTUI Syntax.

Sehe ich das falsch oder hat hier einer eine Lösung für das Problem?

OdfFhem

#3
@Guybrush

Ich kann scheinbar nicht ganz folgen ... das abgewandelte map macht in FTUI3 eigentlich das, was Du willst ...