Ver Fonte

Fix format dict props (#641)

Nikhil Rao há 2 anos atrás
pai
commit
3491955995
2 ficheiros alterados com 11 adições e 1 exclusões
  1. 1 0
      pynecone/components/tags/tag.py
  2. 10 1
      tests/components/test_tag.py

+ 1 - 0
pynecone/components/tags/tag.py

@@ -108,6 +108,7 @@ class Tag(Base):
             # This substitution is necessary to unwrap var values.
             prop = re.sub('"{', "", prop)
             prop = re.sub('}"', "", prop)
+            prop = re.sub('\\\\"', '"', prop)
 
         # Wrap the variable in braces.
         assert isinstance(prop, str), "The prop must be a string."

+ 10 - 1
tests/components/test_tag.py

@@ -39,9 +39,18 @@ def mock_event(arg):
             ),
             '{(e) => Event([E("mock_event", {arg:e.target.value})])}',
         ),
+        ({"a": "red", "b": "blue"}, '{{"a": "red", "b": "blue"}}'),
+        (BaseVar(name="var", type_="int"), "{var}"),
+        (BaseVar(name='state.colors["a"]', type_="str"), '{state.colors["a"]}'),
+        ({"a": BaseVar(name="val", type_="str")}, '{{"a": val}}'),
+        ({"a": BaseVar(name='"val"', type_="str")}, '{{"a": "val"}}'),
+        (
+            {"a": BaseVar(name='state.colors["val"]', type_="str")},
+            '{{"a": state.colors["val"]}}',
+        ),
     ],
 )
-def test_format_value(prop: Var, formatted: str):
+def test_format_prop(prop: Var, formatted: str):
     """Test that the formatted value of an prop is correct.
 
     Args: