remove unused format functions
This commit is contained in:
parent
aadd8b56bf
commit
36af8255d3
@ -4,9 +4,8 @@ from __future__ import annotations
|
|||||||
|
|
||||||
import inspect
|
import inspect
|
||||||
import json
|
import json
|
||||||
import os
|
|
||||||
import re
|
import re
|
||||||
from typing import TYPE_CHECKING, Any, List, Optional, Union
|
from typing import TYPE_CHECKING, Any, Optional, Union
|
||||||
|
|
||||||
from reflex import constants
|
from reflex import constants
|
||||||
from reflex.constants.state import FRONTEND_EVENT_STATE
|
from reflex.constants.state import FRONTEND_EVENT_STATE
|
||||||
@ -107,22 +106,6 @@ def wrap(
|
|||||||
return f"{open * num}{text}{close * num}"
|
return f"{open * num}{text}{close * num}"
|
||||||
|
|
||||||
|
|
||||||
def indent(text: str, indent_level: int = 2) -> str:
|
|
||||||
"""Indent the given text by the given indent level.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
text: The text to indent.
|
|
||||||
indent_level: The indent level.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
The indented text.
|
|
||||||
"""
|
|
||||||
lines = text.splitlines()
|
|
||||||
if len(lines) < 2:
|
|
||||||
return text
|
|
||||||
return os.linesep.join(f"{' ' * indent_level}{line}" for line in lines) + os.linesep
|
|
||||||
|
|
||||||
|
|
||||||
def to_snake_case(text: str) -> str:
|
def to_snake_case(text: str) -> str:
|
||||||
"""Convert a string to snake case.
|
"""Convert a string to snake case.
|
||||||
|
|
||||||
@ -210,80 +193,6 @@ def make_default_page_title(app_name: str, route: str) -> str:
|
|||||||
return to_title_case(title)
|
return to_title_case(title)
|
||||||
|
|
||||||
|
|
||||||
def _escape_js_string(string: str) -> str:
|
|
||||||
"""Escape the string for use as a JS string literal.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
string: The string to escape.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
The escaped string.
|
|
||||||
"""
|
|
||||||
|
|
||||||
# TODO: we may need to re-vist this logic after new Var API is implemented.
|
|
||||||
def escape_outside_segments(segment):
|
|
||||||
"""Escape backticks in segments outside of `${}`.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
segment: The part of the string to escape.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
The escaped or unescaped segment.
|
|
||||||
"""
|
|
||||||
if segment.startswith("${") and segment.endswith("}"):
|
|
||||||
# Return the `${}` segment unchanged
|
|
||||||
return segment
|
|
||||||
else:
|
|
||||||
# Escape backticks in the segment
|
|
||||||
segment = segment.replace(r"\`", "`")
|
|
||||||
segment = segment.replace("`", r"\`")
|
|
||||||
return segment
|
|
||||||
|
|
||||||
# Split the string into parts, keeping the `${}` segments
|
|
||||||
parts = re.split(r"(\$\{.*?\})", string)
|
|
||||||
escaped_parts = [escape_outside_segments(part) for part in parts]
|
|
||||||
escaped_string = "".join(escaped_parts)
|
|
||||||
return escaped_string
|
|
||||||
|
|
||||||
|
|
||||||
def _wrap_js_string(string: str) -> str:
|
|
||||||
"""Wrap string so it looks like {`string`}.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
string: The string to wrap.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
The wrapped string.
|
|
||||||
"""
|
|
||||||
string = wrap(string, "`")
|
|
||||||
string = wrap(string, "{")
|
|
||||||
return string
|
|
||||||
|
|
||||||
|
|
||||||
def format_string(string: str) -> str:
|
|
||||||
"""Format the given string as a JS string literal..
|
|
||||||
|
|
||||||
Args:
|
|
||||||
string: The string to format.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
The formatted string.
|
|
||||||
"""
|
|
||||||
return _wrap_js_string(_escape_js_string(string))
|
|
||||||
|
|
||||||
|
|
||||||
def format_var(var: Var) -> str:
|
|
||||||
"""Format the given Var as a javascript value.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
var: The Var to format.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
The formatted Var.
|
|
||||||
"""
|
|
||||||
return str(var)
|
|
||||||
|
|
||||||
|
|
||||||
def format_route(route: str, format_case=True) -> str:
|
def format_route(route: str, format_case=True) -> str:
|
||||||
"""Format the given route.
|
"""Format the given route.
|
||||||
|
|
||||||
@ -306,40 +215,6 @@ def format_route(route: str, format_case=True) -> str:
|
|||||||
return route
|
return route
|
||||||
|
|
||||||
|
|
||||||
def format_match(
|
|
||||||
cond: str | Var,
|
|
||||||
match_cases: List[List[Var]],
|
|
||||||
default: Var,
|
|
||||||
) -> str:
|
|
||||||
"""Format a match expression whose return type is a Var.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
cond: The condition.
|
|
||||||
match_cases: The list of cases to match.
|
|
||||||
default: The default case.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
The formatted match expression
|
|
||||||
|
|
||||||
"""
|
|
||||||
switch_code = f"(() => {{ switch (JSON.stringify({cond})) {{"
|
|
||||||
|
|
||||||
for case in match_cases:
|
|
||||||
conditions = case[:-1]
|
|
||||||
return_value = case[-1]
|
|
||||||
|
|
||||||
case_conditions = " ".join(
|
|
||||||
[f"case JSON.stringify({condition!s}):" for condition in conditions]
|
|
||||||
)
|
|
||||||
case_code = f"{case_conditions} return ({return_value!s}); break;"
|
|
||||||
switch_code += case_code
|
|
||||||
|
|
||||||
switch_code += f"default: return ({default!s}); break;"
|
|
||||||
switch_code += "};})()"
|
|
||||||
|
|
||||||
return switch_code
|
|
||||||
|
|
||||||
|
|
||||||
def format_prop(
|
def format_prop(
|
||||||
prop: Union[Var, EventChain, ComponentStyle, str],
|
prop: Union[Var, EventChain, ComponentStyle, str],
|
||||||
) -> Union[int, float, str]:
|
) -> Union[int, float, str]:
|
||||||
|
@ -2,7 +2,7 @@ from __future__ import annotations
|
|||||||
|
|
||||||
import datetime
|
import datetime
|
||||||
import json
|
import json
|
||||||
from typing import Any, List
|
from typing import Any
|
||||||
|
|
||||||
import plotly.graph_objects as go
|
import plotly.graph_objects as go
|
||||||
import pytest
|
import pytest
|
||||||
@ -98,60 +98,6 @@ def test_wrap(text: str, open: str, expected: str, check_first: bool, num: int):
|
|||||||
assert format.wrap(text, open, check_first=check_first, num=num) == expected
|
assert format.wrap(text, open, check_first=check_first, num=num) == expected
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
|
||||||
"string,expected_output",
|
|
||||||
[
|
|
||||||
("This is a random string", "This is a random string"),
|
|
||||||
(
|
|
||||||
"This is a random string with `backticks`",
|
|
||||||
"This is a random string with \\`backticks\\`",
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"This is a random string with `backticks`",
|
|
||||||
"This is a random string with \\`backticks\\`",
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"This is a string with ${someValue[`string interpolation`]} unescaped",
|
|
||||||
"This is a string with ${someValue[`string interpolation`]} unescaped",
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"This is a string with `backticks` and ${someValue[`string interpolation`]} unescaped",
|
|
||||||
"This is a string with \\`backticks\\` and ${someValue[`string interpolation`]} unescaped",
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"This is a string with `backticks`, ${someValue[`the first string interpolation`]} and ${someValue[`the second`]}",
|
|
||||||
"This is a string with \\`backticks\\`, ${someValue[`the first string interpolation`]} and ${someValue[`the second`]}",
|
|
||||||
),
|
|
||||||
],
|
|
||||||
)
|
|
||||||
def test_escape_js_string(string, expected_output):
|
|
||||||
assert format._escape_js_string(string) == expected_output
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
|
||||||
"text,indent_level,expected",
|
|
||||||
[
|
|
||||||
("", 2, ""),
|
|
||||||
("hello", 2, "hello"),
|
|
||||||
("hello\nworld", 2, " hello\n world\n"),
|
|
||||||
("hello\nworld", 4, " hello\n world\n"),
|
|
||||||
(" hello\n world", 2, " hello\n world\n"),
|
|
||||||
],
|
|
||||||
)
|
|
||||||
def test_indent(text: str, indent_level: int, expected: str, windows_platform: bool):
|
|
||||||
"""Test indenting a string.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
text: The text to indent.
|
|
||||||
indent_level: The number of spaces to indent by.
|
|
||||||
expected: The expected output string.
|
|
||||||
windows_platform: Whether the system is windows.
|
|
||||||
"""
|
|
||||||
assert format.indent(text, indent_level) == (
|
|
||||||
expected.replace("\n", "\r\n") if windows_platform else expected
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
"input,output",
|
"input,output",
|
||||||
[
|
[
|
||||||
@ -252,25 +198,6 @@ def test_to_kebab_case(input: str, output: str):
|
|||||||
assert format.to_kebab_case(input) == output
|
assert format.to_kebab_case(input) == output
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
|
||||||
"input,output",
|
|
||||||
[
|
|
||||||
("", "{``}"),
|
|
||||||
("hello", "{`hello`}"),
|
|
||||||
("hello world", "{`hello world`}"),
|
|
||||||
("hello=`world`", "{`hello=\\`world\\``}"),
|
|
||||||
],
|
|
||||||
)
|
|
||||||
def test_format_string(input: str, output: str):
|
|
||||||
"""Test formatting the input as JS string literal.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
input: the input string.
|
|
||||||
output: the output string.
|
|
||||||
"""
|
|
||||||
assert format.format_string(input) == output
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
"input,output",
|
"input,output",
|
||||||
[
|
[
|
||||||
@ -310,45 +237,6 @@ def test_format_route(route: str, format_case: bool, expected: bool):
|
|||||||
assert format.format_route(route, format_case=format_case) == expected
|
assert format.format_route(route, format_case=format_case) == expected
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
|
||||||
"condition, match_cases, default,expected",
|
|
||||||
[
|
|
||||||
(
|
|
||||||
"state__state.value",
|
|
||||||
[
|
|
||||||
[LiteralVar.create(1), LiteralVar.create("red")],
|
|
||||||
[LiteralVar.create(2), LiteralVar.create(3), LiteralVar.create("blue")],
|
|
||||||
[TestState.mapping, TestState.num1],
|
|
||||||
[
|
|
||||||
LiteralVar.create(f"{TestState.map_key}-key"),
|
|
||||||
LiteralVar.create("return-key"),
|
|
||||||
],
|
|
||||||
],
|
|
||||||
LiteralVar.create("yellow"),
|
|
||||||
'(() => { switch (JSON.stringify(state__state.value)) {case JSON.stringify(1): return ("red"); break;case JSON.stringify(2): case JSON.stringify(3): '
|
|
||||||
f'return ("blue"); break;case JSON.stringify({TestState.get_full_name()}.mapping): return '
|
|
||||||
f'({TestState.get_full_name()}.num1); break;case JSON.stringify(({TestState.get_full_name()}.map_key+"-key")): return ("return-key");'
|
|
||||||
' break;default: return ("yellow"); break;};})()',
|
|
||||||
)
|
|
||||||
],
|
|
||||||
)
|
|
||||||
def test_format_match(
|
|
||||||
condition: str,
|
|
||||||
match_cases: List[List[Var]],
|
|
||||||
default: Var,
|
|
||||||
expected: str,
|
|
||||||
):
|
|
||||||
"""Test formatting a match statement.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
condition: The condition to match.
|
|
||||||
match_cases: List of match cases to be matched.
|
|
||||||
default: Catchall case for the match statement.
|
|
||||||
expected: The expected string output.
|
|
||||||
"""
|
|
||||||
assert format.format_match(condition, match_cases, default) == expected
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
"prop,formatted",
|
"prop,formatted",
|
||||||
[
|
[
|
||||||
|
Loading…
Reference in New Issue
Block a user