Generate Github-style HTML for unified diffs.
Project description
ghdiff
Generate Github-style HTML for unified diffs.
Changes
0.4 (2014-06-13)
Add iPython magic (mgaitan)
0.3 (2014-04-06)
Fix Python 3 issue when running as a command-line script.
0.2
Detect character encoding when reading files (Nyoroon)
PEP-8 clean up (laulaz)
Fix display problem when text line is too long (laulaz)
0.1
initial release.
diff
Generate a diff and output Github-style HTML for it.
>>> import ghdiff
>>> from six import print_
>>> print_(ghdiff.diff("a\nb", "b\nb"))
<style type="text/css">
...
</style>
<div class="diff">
<div class="control">@@ -1,2 +1,2 @@
</div>
<div class="delete">-a</div>
<div class=""> b</div>
<div class="insert">+b</div>
</div>
The css option controls whether or not the output includes CSS.
>>> print_(ghdiff.diff("blah blah blah\nb", "blah zxqq blah\nb", css=False))
<div class="diff">
<div class="control">@@ -1,2 +1,2 @@
</div>
<div class="delete">-blah <span class="highlight">blah</span> blah</div>
<div class="insert">+blah <span class="highlight">zxqq</span> blah</div>
<div class=""> b</div>
</div>
diff accepts lists of strings representing lines as well.
>>> print_(ghdiff.diff(["blah blah blah", "b"], ["blah zxqq blah", "b"]))
<style type="text/css">
...
</style>
<div class="diff">
<div class="control">@@ -1,2 +1,2 @@
</div>
<div class="delete">-blah <span class="highlight">blah</span> blah</div>
<div class="insert">+blah <span class="highlight">zxqq</span> blah</div>
<div class=""> b</div>
</div>
IPython magic
ghdiff also works as an IPython magic:
In[1]: %load_ext ghdiff
In[2]: %ghdiff var1 var2
See a notebook example
colorize
colorize takes an existing unified diff and outputs Github-style markup.
>>> print_(ghdiff.colorize("""\
... index 921100e..8b177e1 100755
... --- a/src/ghdiff.py
... +++ b/src/ghdiff.py
... @@ -10,20 +10,24 @@ def escape(text):
... default_css = \"\"\"\
... <style type="text/css">
... %s
... -</style>\"\"\" % (open(os.path.join(os.path.dirname(__file__), "default.css")).read(),)
... +</style>
... +\"\"\" % (open(os.path.join(os.path.dirname(__file__), "default.css")).read(),)
... +"""))
<style type="text/css">
...
</style>
<div class="diff">
<div class="control">@@ -10,20 +10,24 @@ def escape(text):</div>
<div class=""> default_css = """ <style type="text/css"></div>
<div class=""> %s</div>
<div class="delete">-</style>""" % (open(os.path.join(os.path.dirname(__file__), "default.css")).read(),)</div>
<div class="insert">+</style></div>
<div class="insert">+""" % (open(os.path.join(os.path.dirname(__file__), "default.css")).read(),)</div>
<div class="insert">+</div>
</div>
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
ghdiff-0.4.tar.gz
(5.7 kB
view hashes)