import re
from .table import char_table
[ドキュメント]
class StringUtil:
[ドキュメント]
@staticmethod
def to_unix(target_str: str) -> str:
"""Unix形式に文字列を変換する
Parameters
----------
target_str: str
変換対象の文字列
Returns
-------
str
変換された文字列
"""
# MEMO: legacy wikidotの実装に合わせている
# 特殊文字の変換辞書の作成
table = str.maketrans(char_table.special_char_map)
# 変換実施
target_str = target_str.translate(table)
# lowercaseへの変換
target_str = target_str.lower()
# ascii以外の文字を削除
target_str = re.sub(r"[^a-z0-9\-:_]", "-", target_str)
target_str = re.sub(r"^_", ":_", target_str)
target_str = re.sub(r"(?<!:)_", "-", target_str)
target_str = re.sub(r"^-*", "", target_str)
target_str = re.sub(r"-*$", "", target_str)
target_str = re.sub(r"-{2,}", "-", target_str)
target_str = re.sub(r":{2,}", ":", target_str)
target_str = target_str.replace(":-", ":")
target_str = target_str.replace("-:", ":")
target_str = target_str.replace("_-", "_")
target_str = target_str.replace("-_", "_")
# 先頭と末尾の:を削除
target_str = re.sub(r"^:", "", target_str)
target_str = re.sub(r":$", "", target_str)
return target_str