+def massage_terme(terme):
+ vedettes = re.split(r"[ ,](?:[A-Z]?[a-zéêèàç-]+[ ,']*)+", terme)
+ vedettes = list(filter(None, vedettes))
+ sous_terme = None
+ if len(vedettes) > 1:
+ sous_terme = terme
+ retval = []
+ for v in vedettes:
+ m = re.match(r"^(.*) \((.*)\)$", v)
+ if m:
+ if m.group(2)[-1] == "'":
+ space = ""
+ else:
+ space = " "
+ v = f"{m.group(2)}{space}{m.group(1)}"
+ if sous_terme:
+ sous_terme = sous_terme.replace(m.group(0), v)
+ formes = v.split(",")
+ if len(formes) > 1:
+ v = formes[0]
+ sous_terme = terme
+ retval.append(v)
+ return (tuple(retval), sous_terme)
+
+def test_massage_terme():
+ assert massage_terme("ÉTANCHE") == (("ÉTANCHE",), None)
+ assert massage_terme("ÉREINTÉ, ÉE") == (("ÉREINTÉ",), "ÉREINTÉ, ÉE")
+ assert massage_terme("CLÉ ou CLEF") == (("CLÉ", "CLEF"), "CLÉ ou CLEF")
+ assert massage_terme("HÉMORRAGIE, suivant le dictionnaire de l'Académie, mais mieux HÉMORRHAGIE") == \
+ (("HÉMORRAGIE", "HÉMORRHAGIE"), "HÉMORRAGIE, suivant le dictionnaire de l'Académie, mais mieux HÉMORRHAGIE")
+ assert massage_terme("QUINDÉCEMVIRS ou mieux QUINDÉCIMVIRS puisque le latin est quindecimviri") \
+ == (("QUINDÉCEMVIRS", "QUINDÉCIMVIRS"), "QUINDÉCEMVIRS ou mieux QUINDÉCIMVIRS puisque le latin est quindecimviri")
+ assert massage_terme("DÉVOUEMENT, ou comme quelques-uns écrivent, dit l'Académie, DÉVOÛMENT") == (("DÉVOUEMENT", "DÉVOÛMENT"), "DÉVOUEMENT, ou comme quelques-uns écrivent, dit l'Académie, DÉVOÛMENT")
+ assert massage_terme("HÉMA- ou HÉMO- ou HÉMATO-") == (("HÉMA-", "HÉMO-", "HÉMATO-"), "HÉMA- ou HÉMO- ou HÉMATO-")
+ assert massage_terme("DIVINIS (A)") == (("A DIVINIS",), None)
+ assert massage_terme("BORDEAUX (VIN DE) ou vulgairement et en termes de commerce BORDEAUX") == \
+ (("VIN DE BORDEAUX", "BORDEAUX"), "VIN DE BORDEAUX ou vulgairement et en termes de commerce BORDEAUX")
+