|
|
|
|
|
def dict_from_text(data): |
|
lines = data.strip().split("\n") |
|
current_item = {} |
|
for line in lines: |
|
if ":" in line: |
|
key, value = line.split(":") |
|
key = key.strip() |
|
value = value.strip(", ") |
|
current_item[key] = value |
|
return current_item |
|
|
|
def list_of_dict_from_text(data): |
|
|
|
lines = data.strip().split("\n") |
|
output_list = [] |
|
|
|
current_item = {} |
|
|
|
for line in lines: |
|
line = line.strip() |
|
|
|
if not line: |
|
continue |
|
if "name :" in line: |
|
if current_item: |
|
output_list.append(current_item) |
|
current_item = {"name": line.split(":")[1].strip(", ")} |
|
|
|
elif ":" in line: |
|
key, value = line.split(":") |
|
key = key.strip() |
|
value = value.strip(", ") |
|
if key == "secrets" : |
|
value = list_from_text(value) |
|
current_item[key] = value |
|
|
|
if current_item: |
|
output_list.append(current_item) |
|
|
|
return output_list |
|
|
|
def list_from_text(data): |
|
|
|
value = [v.strip().strip("'").strip("\n") for v in data.split(",")] |
|
|
|
return value |
|
|
|
|
|
def format_qualities(qualities): |
|
|
|
formatted_text = "" |
|
if type(qualities) == list: |
|
|
|
for item in qualities: |
|
if type(item) == dict : |
|
|
|
for key, value in item.items(): |
|
if type(value) == list: |
|
formatted_text += f"{key} : " |
|
for i in value: |
|
formatted_text += f"{i} , " |
|
formatted_text = formatted_text.rstrip(" ,") |
|
formatted_text += "\n" |
|
|
|
else : |
|
formatted_text += f"{key} : {value}\n" |
|
formatted_text = formatted_text.rstrip(",") |
|
formatted_text += "\n" |
|
|
|
if type(item) == list: |
|
|
|
for i in item: |
|
formatted_text += f"{i} , " |
|
formatted_text = formatted_text.rstrip(" ,") |
|
if type(item) == str: |
|
print(f"List : {item}") |
|
formatted_text += f"{item} , " |
|
|
|
|
|
formatted_text = formatted_text.rstrip(",").rstrip(" ,") |
|
formatted_text += "\n " |
|
return formatted_text |
|
|
|
elif type(qualities) == dict: |
|
for key, value in qualities.items(): |
|
formatted_text += f"{key} : {value}\n" |
|
formatted_text = formatted_text.rstrip(",") |
|
return formatted_text |
|
|
|
def parse_text_to_store_dict(store_name, |
|
store_description, |
|
store_reputation, |
|
store_backstory, |
|
store_sd_prompt, |
|
store_location, |
|
store_type, |
|
store_size, |
|
store_owner, |
|
store_employees, |
|
store_hours, |
|
store_services, |
|
store_specialties, |
|
store_customers, |
|
store_quests, |
|
store_rumors, |
|
store_security, |
|
store_inventory): |
|
|
|
|
|
|
|
|
|
|
|
print(f"{store_inventory}") |
|
|
|
|
|
store_dict = {} |
|
if store_name : |
|
store_dict['store_name'] = store_name |
|
else: store_dict['store_name'] = "" |
|
|
|
if store_description : |
|
store_dict['store_description'] = store_description |
|
else: store_dict['store_description'] = "" |
|
|
|
if store_reputation : |
|
store_dict['store_reputation'] = store_reputation |
|
else: store_dict['store_reputation'] = "" |
|
|
|
if store_backstory : |
|
store_dict['store_backstory'] = store_backstory |
|
else: store_dict['store_backstory'] = "" |
|
|
|
if store_type : |
|
store_dict['store_type'] = store_type |
|
else: store_dict['store_type'] = "" |
|
|
|
if store_size : |
|
store_dict['store_size'] = store_size |
|
else: store_dict['store_size'] = "" |
|
|
|
if store_hours : |
|
store_dict['store_hours'] = store_hours |
|
else: store_dict['store_hours'] = "" |
|
|
|
if store_sd_prompt : |
|
store_dict['store_sd_prompt'] = store_sd_prompt |
|
else: store_dict['store_sd_prompt'] = "" |
|
|
|
if store_location : |
|
store_dict['store_location'] = dict_from_text(store_location) |
|
else: store_dict['store_location'] = '' |
|
|
|
if store_owner : |
|
store_dict['store_owners'] = list_of_dict_from_text(store_owner) |
|
else: store_dict['store_owners'] = '' |
|
|
|
if store_employees : |
|
store_dict['store_employees'] = list_of_dict_from_text(store_employees) |
|
else: store_dict['store_employees'] = '' |
|
|
|
if store_quests : |
|
store_dict['store_quests'] = list_of_dict_from_text(store_quests) |
|
else: store_dict['store_quests'] = '' |
|
|
|
if store_customers : |
|
store_dict['store_customers'] = list_of_dict_from_text(store_customers) |
|
else: store_dict['store_customers'] = '' |
|
|
|
if store_rumors : |
|
store_dict['store_rumors'] = list_from_text(store_rumors) |
|
|
|
if store_services : |
|
store_dict['store_services'] = list_of_dict_from_text(store_services) |
|
else: store_dict['store_services'] = '' |
|
|
|
if store_specialties : |
|
store_dict['store_specialties'] = list_of_dict_from_text(store_specialties) |
|
else: store_dict['store_specialties'] = '' |
|
|
|
if store_security : |
|
store_dict['store_security'] = list_of_dict_from_text(store_security) |
|
else: store_dict['store_security'] = '' |
|
|
|
return store_dict |
|
|
|
def format_inventory(inventory): |
|
formatted_text = "" |
|
print(f"Formatting Inventory ,{type(inventory)} ") |
|
|
|
for item_split_text, item_list in inventory.items(): |
|
|
|
formatted_text += f"{item_split_text} \n\n " |
|
|
|
for item in item_list: |
|
|
|
|
|
if type(item) == dict: |
|
for key, value in item.items(): |
|
if type(value) == list: |
|
formatted_text += f"{key} :" |
|
for i in value : |
|
formatted_text += f" '{i}', " |
|
formatted_text = formatted_text.rstrip(", ") |
|
formatted_text += "\n" |
|
|
|
else: |
|
formatted_text += f"{key} : {value},\n" |
|
formatted_text += "\n" |
|
|
|
return formatted_text |
|
|
|
|
|
def parse_text_to_inventory_dict(data): |
|
inventory_categories = [ |
|
"core_inventory", |
|
"weapons", |
|
"armor", |
|
"potions", |
|
"scrolls", |
|
"magical_items", |
|
"mundane_items", |
|
"miscellaneous_items" |
|
] |
|
|
|
lines = data.strip().split("\n") |
|
inventory = {} |
|
current_category = None |
|
current_item = {} |
|
|
|
for line in lines: |
|
line = line.strip() |
|
|
|
if not line: |
|
continue |
|
|
|
if line in inventory_categories: |
|
|
|
current_category = f"{line}" |
|
inventory[f"{current_category}"] = [] |
|
|
|
elif "name :" in line: |
|
if current_item: |
|
inventory[f"{current_category}"].append(current_item) |
|
current_item = {"name": line.split(":")[1].strip(", ")} |
|
|
|
|
|
elif ":" in line: |
|
key, value = line.split(":") |
|
key = key.strip() |
|
value = value.strip(", ") |
|
if key == "properties": |
|
value = [v.strip().strip("'") for v in value.split(",")] |
|
current_item[key] = value |
|
|
|
|
|
|
|
if current_item: |
|
inventory[current_category].append(current_item) |
|
|
|
return inventory |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|