1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
|
.. image:: https://secure.travis-ci.org/kilink/ghdiff.png?branch=master
:target: http://travis-ci.org/kilink/ghdiff
.. image:: https://coveralls.io/repos/kilink/ghdiff/badge.png
:target: https://coveralls.io/r/kilink/ghdiff
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.
.. code-block:: pycon
>>> 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.
.. code-block:: pycon
>>> 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.
.. code-block:: pycon
>>> 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:
.. code-block:: python
In[1]: %load_ext ghdiff
In[2]: %ghdiff var1 var2
See a `notebook example <http://nbviewer.ipython.org/github/kilink/ghdiff/blob/master/demo.ipynb>`_
colorize
========
colorize takes an existing unified diff and outputs Github-style markup.
.. code-block:: python
>>> 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>
|