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-diffoption. - 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.cssto 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 usingsedto replace those. If your workflow or text contains those strings, ymmv.
