thanhnt-cf's picture
update demo app
9645c29
import re
from typing import Dict, List, Union
def product_data_to_str(product_data: Dict[str, Union[str, List[str]]]) -> str:
"""
Convert product data to a string.
Args:
- product_data: a dictionary of product data
Returns:
- a string representation of the product data
"""
if product_data is None:
return ""
data_list = []
for k, v in product_data.items():
data_line = None
if isinstance(v, list):
delimiter = ","
for sub_v in v:
if "," in sub_v:
delimiter = (
";" # Use semicolon as delimiter if comma is found in the value
)
for i, sub_v in enumerate(v):
if ";" in sub_v:
v[i] = f'"{sub_v}"'
data_line = f"{k}: {f'{delimiter} '.join(v)}"
elif isinstance(v, str):
data_line = f"{k}: {v}"
else:
raise ValueError(
f"Unsupported data type for value of product data: {type(v)}. Only list and str are supported."
)
data_list.append(data_line)
return "\n".join(data_list)
def to_snake_case(s):
# Remove leading/trailing whitespace and convert to lowercase
s = s.strip().lower()
# Replace spaces, hyphens, and periods with underscores
s = re.sub(r'[\s\-\.\+]', '_', s)
# Remove any characters that are not alphanumeric or underscores
s = re.sub(r'[^a-z0-9_]', '', s)
# Replace multiple underscores with a single one
s = re.sub(r'_+', '_', s)
# Remove leading digits (Python variable names can't start with a number)
s = re.sub(r'^[0-9]+', '', s)
# Make sure it doesn't start with an underscore and is not empty
if not s or not s[0].isalpha():
s = 'var_' + s
return s