Switch to side-by-side view

--- a/HelloForge/helloforge/main.py
+++ b/HelloForge/helloforge/main.py
@@ -95,6 +95,20 @@
     def diff(self, v1, v2):
         p1 = self.page(int(v1))
         p2 = self.page(int(v2))
+        t1 = p1.text
+        t2 = p2.text
+        differ = difflib.SequenceMatcher(None, p1.text, p2.text)
+        result = []
+        for tag, i1, i2, j1, j2 in differ.get_opcodes():
+            if tag in ('delete', 'replace'):
+                result += [ '<del>', t1[i1:i2], '</del>' ]
+            if tag in ('insert', 'replace'):
+                result += [ '<ins>', t2[j1:j2], '</del>' ]
+            if tag == 'equal':
+                result += t1[i1:i2]
+        result = M.to_html(''.join(result))
+        return dict(p1=p1, p2=p2, edits=result)
+            
         p1_lines = p1.text.splitlines(True)
         p2_lines = p2.text.splitlines(True)
         hdiff=difflib.HtmlDiff()