Skip to content

Comparaison de textes

L'endpoint /diff compare deux textes et retourne une liste ordonnée des changements, ligne par ligne ou mot par mot.

Comment ça marche ?

La comparaison repose sur l'algorithme de la plus longue sous-séquence commune (LCS) : il recherche le plus grand ensemble de segments partagés par les deux textes dans le même ordre, et tout ce qui en sort est signalé comme ajouté ou supprimé. En mode line, les textes sont découpés aux sauts de ligne, les lignes vides étant conservées ; en mode word, ils sont découpés sur les espaces et les segments vides sont ignorés.

Paramètres

Le corps de la requête doit être en JSON :

ParamètreRequisDescription
aOuiTexte original
bOuiTexte modifié, comparé à a
modeNonGranularité de la comparaison : line ou word. Par défaut : line

Modes disponibles

ModeDescription
lineDécoupe les deux textes aux sauts de ligne et compare ligne par ligne
wordDécoupe les deux textes sur les espaces et compare mot par mot

Champs de réponse

ChampTypeDescription
modestringGranularité utilisée : line ou word
addednumberNombre de segments présents uniquement dans b
removednumberNombre de segments présents uniquement dans a
changesobject[]Changements ordonnés reconstruisant b à partir de a

Entrées de changes :

ChampTypeDescription
typestringequal, add ou del
valuestringLa ligne ou le mot concerné

Exemples de code

curl -X POST \
  -H "Content-Type: application/json" \
  -d '{
    "a": "line1\nline2",
    "b": "line1\nline2 edited"
  }' \
  "https://api.sylvain.sh/v5/diff"

Essayer

Gestion des erreurs

Si les paramètres sont manquants ou invalides, l'API retournera une erreur :

Message d'erreurDescription
Please provide a first text (a={text})Le paramètre a est manquant ou n'est pas une chaîne
Please provide a second text (b={text})Le paramètre b est manquant ou n'est pas une chaîne
Texts must be 10000 characters or fewera ou b dépasse la longueur maximale
Mode must be one of: line, wordLa valeur de mode n'est ni line ni word
Texts must contain 2000 lines or fewerUn texte dépasse la limite de lignes en mode line
Texts must contain 2000 words or fewerUn texte dépasse la limite de mots en mode word