Kaynağa Gözat

#865 use urllib for encoding characters like "%"

Falko Schindler 2 yıl önce
ebeveyn
işleme
749797d7ac
2 değiştirilmiş dosya ile 9 ekleme ve 10 silme
  1. 2 10
      nicegui/elements/log.py
  2. 7 0
      tests/test_log.py

+ 2 - 10
nicegui/elements/log.py

@@ -1,3 +1,4 @@
+import urllib.parse
 from collections import deque
 from typing import Any, Optional
 
@@ -24,17 +25,8 @@ class Log(Element):
         self.lines: deque[str] = deque(maxlen=max_lines)
 
     def push(self, line: Any) -> None:
-        escapes = [
-            ('&', '&'),
-            ('<', '&lt;'),
-            ('>', '&gt;'),
-            ('"', '&quot;'),
-            ("'", '&#39;'),
-            ('%', '&#37;')
-        ]
-        for escape, replacement in escapes:
-            line = line.replace(escape, replacement)
         line = str(line)
+        line = urllib.parse.quote(line)
         self.lines.extend(line.splitlines())
         self._props['lines'] = '\n'.join(self.lines)
         self.run_method('push', line)

+ 7 - 0
tests/test_log.py

@@ -43,3 +43,10 @@ def test_replace_log(screen: Screen):
     screen.click('Replace')
     screen.should_contain('B')
     screen.should_not_contain('A')
+
+
+def test_special_characters(screen: Screen):
+    ui.log().push('100%')
+
+    screen.open('/')
+    screen.should_contain('100%')