2017-05-02 5 views
0

J'ai une version actuelle d'une spécification en HTML, et une plus ancienne. Je veux être en mesure d'obtenir un fichier HTML montrant les différences entre l'ancienne et la nouvelle spécification.Diff entre deux fichiers html textuels

Ma stratégie au moment:

  • savoir comment obtenir un diff entre les mots, et non des lignes
  • savoir comment remplacer une sortie diff avec peut-être <span class="addition"> et <span class="removal"> pour colorer les différents ajouts et les déménagements.

Une idée sur la façon de le faire rapidement?

Répondre

1

git diff a une option --word-diff:

--word-diff [= mode < >]
Afficher un mot diff, en utilisant les mots pour délimiter modifiés. Par défaut, les mots sont délimités par des espaces; voir --word-diff-regex ci-dessous. Les valeurs par défaut sont les suivantes:

couleur
Mettez en surbrillance les mots modifiés en utilisant uniquement des couleurs. Implique --color.

plaine
Afficher les mots comme [-removed-] et {+ added +}. N'effectue aucune tentative d'échappement des délimiteurs s'ils apparaissent dans l'entrée, de sorte que la sortie peut être ambiguë.

porcelaine
Utilisez un format de ligne spécial destiné à la consommation de script. Les exécutions ajoutées/supprimées/inchangées sont imprimées dans le format diff unifié habituel, en commençant par un caractère +/-/ au début de la ligne et s'étendant jusqu'à la fin de la ligne . Les nouvelles lignes dans l'entrée sont représentées par un tilde ~ sur une ligne qui lui est propre.

aucun
Désactiver à nouveau le mot diff.

Notez que malgré le nom du premier mode, la couleur est utilisée pour mettre en évidence les parties modifiées dans tous les modes si elle est activée.

Vous pouvez probablement utiliser word-diff=plain et carrément remplacer [-, -], {+ et +} avec vos balises span,
ou utiliser le mode porcelain, qui délivre un format de sortie non ambiguë:
pour chaque ligne de sortie, la premier caractère vous indique quel type de données est représenté sur le reste de la ligne:

  • ~: c'est la fin d'une ligne (il devrait y avoir aucun texte ni espaces suivant l'un des principaux ~)
  • (espace): un morceau inchangé de texte
  • +: un bloc de texte qui a été ajouté
  • -: un bloc de texte qui a été supprimé
+0

grand idée! Savez-vous comment se débarrasser de '@@ -457,8 +468,9 @@' et avoir le texte entier au lieu de sauter dans le code? –

+0

"grep" les lignes que vous ne voulez pas – LeGEC

+0

pour votre deuxième question: voulez-vous dire par la sortie 'plain', ou la sortie« porcelaine »? – LeGEC