Script Python pour extraire les chaînes d'une source I7

En parallèle à ma FI du concours et comme je n’ai rien trouvé de semblable sur l’internet, j’ai écrit un petit script Python qui permet d’extraire toutes les chaînes d’une source I7. Cependant, elle ne se contente pas de les compiler dans un fichier texte, elle s’occupe aussi de remplacer les substitutions (par exemple, « [line break] » sera remplacé par un saut de ligne, et « [bracket] » par un crochet ouvrant).

Ça permet de passer son texte dans un correcteur orthographique, sans que celui-ci ne devienne fou avec ces crochets partout qui ne veulent rien dire.

Malheureusement, le code ne prend pas encore en compte les conditions et les « one of », entre autres choses. Mon plan est que pour chaque chaîne contenant ces structures, le script écrive plusieurs fois la chaîne, dans toutes les combinaisons possibles (quand la condition est vrai ou fausse ou pour chaque possibilité du « one of »).

J’imagine que la meilleure façon de faire ça est d’utiliser du regex pour simplifier la chaîne. Par exemple :

"Salut ! [if condition 1]Blabla[else if condition 2]Patati[else]Patata[end if]. Au revoir !"

deviendrait

"Salut ! [[Blabla|Patati|Patata]]. Au revoir !"

Après, il suffirait d’analyser la chaîne pour choisir un élément dans chaque ensemble entre double crochets.

À moins que quelqu’un a une meilleure idée ? [ÉDITION : En fait j’ai décidé de laisser tomber ; voir message ci-dessous.]

Mais bref, ça se nomme « I7extract.py » et c’est disponible ici [ÉDITION : mise à jour du lien] :
https://bitbucket.org/Natrium729/inform-7-text-extractor

Je ne suis pas un pro du Python, et il y a sûrement moyen de mieux optimiser le code, alors toute remarque est la bienvenue ! :slight_smile:

Deux années passent…

Finalement, j’ai tout réécrit à partir de zéro afin de rendre le script plus modulable et de suivre de meilleures pratiques.

Il y a un dépôt dédié maintenant : bitbucket.org/Natrium729/inform … -extractor

Parmi les nouveautés, on peut spécifier des options pour changer le comportement du script (nom du fichier de destination, séparateur entre les chaînes…) et on peut maintenant créer des substitutions personnalisées dans un fichier JSON.

J’ai laissé tomber la gestion des [if …] et des [one of], parce qu’en fait c’était trop compliqué à gérer et que l’idée de trouver toutes les combinaisons possibles menait vers de l’explosion combinatoire. (S’il y a 3 textes conditionnels dans une chaîne, chacun ayant 3 valeurs possibles, alors ça donne 27 textes possibles. L’utilisateur peut ainsi se retrouver avec des dizaines de textes similaires, sachant que pas tous peuvent véritablement arriver en jeu, car tout dépend des conditions.)