À propos du projet

jsdiff est une bibliothèque JavaScript de comparaison de texte basée sur l'algorithme de différence Myers O(ND). Elle fournit une API complète pour comparer du texte à plusieurs granularités : - **Diff au niveau des caractères** (`diffChars`) : traite chaque point de code Unicode comme un jeton, avec comparaison insensible à la casse en option. - **Diff au niveau des mots** (`diffWords`, `diffWordsWithSpace`) : traite les mots et la ponctuation comme des jetons, avec prise en charge optionnelle d'`Intl.Segmenter` pour une meilleure segmentation des mots non anglais. - **Diff au niveau des lignes** (`diffLines`) : traite chaque ligne comme un jeton, avec des options pour ignorer les espaces, gérer les caractères CR en fin de ligne et traiter les sauts de ligne comme des jetons distincts. - **Diff au niveau des phrases** (`diffSentences`) : traite les phrases et les espaces entre phrases comme des jetons. - **Diff CSS** (`diffCss`) : compare les jetons CSS. - **Diff JSON** (`diffJson`) : sérialise les objets en JSON formaté et effectue un diff ligne par ligne, avec un ordre alphabétique des propriétés. - **Diff de tableaux** (`diffArrays`) : compare des tableaux de jetons avec une égalité stricte ou un comparateur personnalisé. La bibliothèque fournit également des capacités de gestion de patchs : - **Création de patchs** : `createPatch` et `createTwoFilesPatch` génèrent des patchs au format diff unifié avec des lignes de contexte configurables et des options d'en-tête. - **Patchs structurés** : `structuredPatch` renvoie une structure de données avec des objets hunk adaptés au traitement programmatique. - **Application de patchs** : `applyPatch` et `applyPatches` appliquent des patchs au format diff unifié avec prise en charge d'un facteur de tolérance, conversion automatique des fins de ligne et callbacks de comparaison de lignes personnalisés. - **Analyse de patchs** : `parsePatch` analyse le format diff unifié (y compris les en-têtes étendus spécifiques à Git pour les renommages, copies, créations, suppressions et fichiers binaires) en objets structurés. - **Inversion de patchs** : `reversePatch` génère un patch inverse. - **Conversion de format** : `convertChangesToXML` et `convertChangesToDMP` convertissent les objets de changement au format XML ou au format diff-match-patch de Google. Les options universelles incluent le mode callback asynchrone, les limites de longueur d'édition maximale, la prise en charge des délais d'attente et la granularité des objets de changement par jeton. La bibliothèque prend également en charge des comportements de diff personnalisés via la classe `Diff`, permettant aux utilisateurs de remplacer les fonctions de conversion d'entrée, de tokenisation, de suppression de jetons vides, de vérification d'égalité et de jointure. La bibliothèque est disponible via npm (`npm install diff`) et prend en charge les imports ESM et CommonJS, ainsi que l'utilisation directe dans le navigateur via `dist/diff.js`.