X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/5ef8e304790026b27417d8ff3c76c18858ba708f..73ef2b8442dc95f8b7279de812c30ac8626d5f39:/apps/wiki_img/nice_diff.py diff --git a/apps/wiki_img/nice_diff.py b/apps/wiki_img/nice_diff.py deleted file mode 100644 index b228fad9..00000000 --- a/apps/wiki_img/nice_diff.py +++ /dev/null @@ -1,61 +0,0 @@ -# -*- coding: utf-8 -*- -# -# This file is part of FNP-Redakcja, licensed under GNU Affero GPLv3 or later. -# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information. -# -import difflib -import re -from collections import deque - -from django.template.loader import render_to_string -from django.utils.html import escape as html_escape - -DIFF_RE = re.compile(r"""\x00([+^-])""", re.UNICODE) -NAMES = {'+': 'added', '-': 'removed', '^': 'changed'} - - -def diff_replace(match): - return """""" % NAMES[match.group(1)] - - -def filter_line(line): - return DIFF_RE.sub(diff_replace, html_escape(line)).replace('\x01', '') - - -def format_changeset(a, b, change): - return (a[0], filter_line(a[1]), b[0], filter_line(b[1]), change) - - -def html_diff_table(la, lb, context=None): - all_changes = difflib._mdiff(la, lb) - - if context is None: - changes = (format_changeset(*c) for c in all_changes) - else: - changes = [] - q = deque() - after_change = False - - for changeset in all_changes: - q.append(changeset) - - if changeset[2]: - after_change = True - if not after_change: - changes.append((0, '-----', 0, '-----', False)) - changes.extend(format_changeset(*c) for c in q) - q.clear() - else: - if len(q) == context and after_change: - changes.extend(format_changeset(*c) for c in q) - q.clear() - after_change = False - elif len(q) > context: - q.popleft() - - return render_to_string("wiki/diff_table.html", { - "changes": changes, - }) - - -__all__ = ['html_diff_table']