Mermaid - Convertor
January 6, 2025Less than 1 minute
Basic Functions
Using python write basic functions for convertor
import re
import string
def generate_letter_code():
# All lower case
letters = string.ascii_lowercase
i = 1
while True:
# All the combination of lenght of i using letters
for combination in product(letters, repeat=i):
yield ''.join(combination)
i += 1
def get_lstrip(astr):
return astr[:len(astr) - len(astr.lstrip())]
def get_split(line_string):
# 定义正则表达式
pattern = r"([-]{2,}>)"
# 使用 re.findall 提取匹配的部分
return re.findall(pattern, line_string)
def get_items(line_string):
return list(map(lambda x: x.strip(), re.split(r"[-]{2,}>", line)))
Example
data = """
graph LR:
王东 ---> 重疾
王东 ---> 住院报销
王东 --> 意外
王东 ---> 养老
重疾 ---> 吉祥至尊两全(新华)保额10万
重疾 ---> 健康无忧(新华)保额30万
住院报销 ---> 康健华尊(新华)
住院报销 ---> 吉祥至尊(新华)
意外 ---> 安心百分百
意外 ---> 百万任我行
"""
lines = data.strip().split("\n")
code = generate_letter_code()
code_item = {}
for line in lines:
items = get_items(line)
for item in items:
code_item[item] = code_item[item] if code_item.__contains__(item) else next(code)
if len(items) == 2:
print(f"{get_lstrip(line)} {code_item[items[0]]}[{items[0]}] {get_split(line)[0]} {code_item[items[1]]}[{items[1]}]")
else:
print(line)