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. Rather hacky, but functional when needed.
- 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:
- Uses git's
--word-diff
option. - This annotates/tags the text with
{+ +}
for additions and[- -]
for removals - Using sed (potentially fragile) we replace addition and removal tags
{+ +}
and[- -]
with markdown tags__
and~~
for underline and strikethrough Markdown styles respectively. - We treat output as Markdown and pipe it 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 (underline) and removals (strikethrough) in both 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.