diff --git a/pynecone/components/tags/tag.py b/pynecone/components/tags/tag.py index fc076028ac..e9c492cbe0 100644 --- a/pynecone/components/tags/tag.py +++ b/pynecone/components/tags/tag.py @@ -108,6 +108,7 @@ def format_prop( # 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." diff --git a/tests/components/test_tag.py b/tests/components/test_tag.py index 349a4fcebb..d9029df852 100644 --- a/tests/components/test_tag.py +++ b/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: