jumpserver/apps/common/utils/strings.py

45 lines
1.1 KiB
Python

import difflib
import re
def no_special_chars(s):
return bool(re.match(r'\w+$', s))
def safe_str(s):
return s.encode('utf-8', errors='ignore').decode('utf-8')
def get_text_diff(old_text, new_text):
diff = difflib.unified_diff(
old_text.splitlines(), new_text.splitlines(), lineterm=""
)
return "\n".join(diff)
def color_fmt(msg, color=None):
# ANSI 颜色代码
colors = {
'red': '\033[91m',
'green': '\033[92m',
'yellow': '\033[93m',
'blue': '\033[94m',
'purple': '\033[95m',
'cyan': '\033[96m',
'default': '\033[0m' # 结束颜色的默认值
}
# 获取颜色代码,如果没有指定颜色或颜色不支持,使用默认颜色
color_code = colors.get(color, colors['default'])
# 打印带颜色的消息
return f"{color_code}{msg}{colors['default']}" # 确保在消息结束后重置颜色
def color_print(msg, color=None):
print(color_fmt(msg, color))
def color_fill_print(tmp, msg, color=None):
text = tmp.format(color_fmt(msg, color))
print(text)