Sobre o projeto
jsdiff é uma biblioteca JavaScript de diferenças de texto baseada no algoritmo de Myers O(ND). Ela fornece uma API abrangente para comparar texto em múltiplas granularidades:
- **Diff em nível de caractere** (`diffChars`): Trata cada ponto de código Unicode como um token, com comparação opcional sem diferenciação de maiúsculas/minúsculas.
- **Diff em nível de palavra** (`diffWords`, `diffWordsWithSpace`): Trata palavras e pontuação como tokens, com suporte opcional a `Intl.Segmenter` para melhor segmentação de palavras não-inglesas.
- **Diff em nível de linha** (`diffLines`): Trata cada linha como um token, com opções para ignorar espaços em branco, lidar com caracteres CR finais e tratar novas linhas como tokens separados.
- **Diff em nível de frase** (`diffSentences`): Trata frases e espaços entre frases como tokens.
- **Diff de CSS** (`diffCss`): Compara tokens de CSS.
- **Diff de JSON** (`diffJson`): Serializa objetos em JSON formatado e faz diff linha por linha, com ordenação alfabética de propriedades.
- **Diff de arrays** (`diffArrays`): Compara arrays de tokens com igualdade estrita ou um comparador personalizado.
A biblioteca também fornece capacidades de gerenciamento de patches:
- **Criação de patches**: `createPatch` e `createTwoFilesPatch` geram patches no formato de diff unificado com linhas de contexto e opções de cabeçalho configuráveis.
- **Patches estruturados**: `structuredPatch` retorna uma estrutura de dados com objetos de hunk adequados para processamento programático.
- **Aplicação de patches**: `applyPatch` e `applyPatches` aplicam patches de diff unificado com suporte a fator de fuzz, conversão automática de terminações de linha e callbacks personalizados de comparação de linhas.
- **Análise de patches**: `parsePatch` analisa o formato diff unificado (incluindo cabeçalhos estendidos específicos do Git para renomes, cópias, criações, exclusões e arquivos binários) em objetos estruturados.
- **Reversão de patches**: `reversePatch` gera um patch inverso.
- **Conversão de formato**: `convertChangesToXML` e `convertChangesToDMP` convertem objetos de mudança para XML ou o formato do Google diff-match-patch.
Opções universais incluem modo de callback assíncrono, limites máximos de comprimento de edição, suporte a timeout e granularidade de objetos de mudança por token. A biblioteca também suporta comportamentos personalizados de diff através da classe `Diff`, permitindo que usuários sobrescrevam funções de conversão de entrada, tokenização, remoção de tokens vazios, verificação de igualdade e junção.
A biblioteca está disponível via npm (`npm install diff`) e suporta imports ESM e CommonJS, além de uso direto no navegador via `dist/diff.js`.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.