GitHub has a nice way of showing word-based diffs on text and/or Markdown files. I needed a way to be able to create similar pretty diffs as standalone documents. This is what I came up with.
- git
- pandoc
git clone https://github.com/jduckles/pwdiff
cd pwdiff
./pwdiff examples/file1.md examples/file2.md > out.html
Then have a look at out.html and you should see something like:
- We use git's
--word-diff
option. - Which annotates/tags the text with
{+ +}
for additions and[- -]
for removals - Using sed we replace addition and removal tags
{+ +}
and[- -]
with markdown tags__
and~~
for underline and strikethrough. - We treat output as Markdown and pipe to pandoc to convert to HTML.
- Applying the
styles.css
to that HTML we style underline to green and strikethrough to red to show additions and removals in a colorsighted and colorblind accessible way.
- We're using git diff's -U option to show so-many lines of context. I've set this very large for now. It should probably just be the larger of the total number lines of the two files input.
- This is fragile to the tagging syntax used by git diff
[- -], {+ +}
as we're usingsed
to replace those. If your workflow or text contains those strings, ymmv.