Cette semaine, c'est Nicolas qui vous propose un #KataOfTheWeek : Générateur de S-Séquences
Briefing du Kata : Dans ce challenge viens du concours "Meilleur Dev de France Mai 2014", vous devez convertir un fichier XML au format S-Expression. Les jeux de données en entrée sont constitués de balises ouvrantes et fermantes. Entre la balise ouvrante et la balise fermante d'une paire (même nom), il y a zéro, une ou plusieurs balises et ainsi de suite.
On veut transformer cette notation en utilisant des s-expressions plutôt que des balises, c'est-à-dire en écrivant "(xxx…)" plutôt que "\…\". Dans notre cas… est soit nul, soit correspond à d'autres balises.
Exemple :
- <access><blockcode><a><blockcode><blockcode></blockcode></blockcode></a></blockcode></access>
Doit être transformé en:
- (access(blockcode(a(blockcode(blockcode)))))
Le programme doit aussi reconnaître un jeu de données mal formé (pour lequel il y a erreur de correspondance entre balises entrantes et fermantes) et écrire à la place du fichier transformé un message d'erreur standardisé de la forme E n </xxx> </yyy> (chaque terme est séparé par un espace) où :- E est la lettre 'E' (qui signale une erreur)
- n indique la position en caractères du début de la première balise incorrecte (c'est-à-dire la position de son caractère <)
- </xxx> correspond à la première balise (fermante) incorrecte
- </yyy> correspond à la balise (fermante) attendue
Entrée : Une chaîne de caractères contenant une série de balises ouvrantes et fermantes bien ou mal formée.
Sortie : La S-Expression correspondante ou le message d'erreur correspondant.
Saurez-vous résoudre le problème ?
Bon courage ! Retrouvez la solution dans cet article 😉