emmental/emmental/format.py

36 lines
900 B
Python

# Copyright 2022 (c) Anna Schumaker
"""Helper functions for formatting strings."""
import re
IGNORE_WORDS = set(["a", "an", "the", ""])
def search(input: str) -> str | None:
"""Translate the input string into a sqlite3 GLOB statement."""
input = input.strip().casefold()
if len(input) == 0:
return None
if input[0] == "^":
input = input[1:] if len(input) > 1 else "*"
elif input[0] != "*":
input = "*" + input
if input[-1] == "$":
input = input[:-1]
elif input[-1] != "*":
input += "*"
return input
def sort_key(input: str) -> tuple:
"""Translate the input string into a sort key."""
if len(input) == 0:
return ()
input = re.sub(r"[\"\'’“”]", "", input.casefold())
res = re.split(r"[ /_-]", input)
if len(res) > 1 and res[0] in IGNORE_WORDS:
res = res[1:]
return tuple(res)