잉여개발기 (SPDV) 3 лет назад
Родитель
Сommit
1615e6bd9e
3 измененных файлов с 53 добавлено и 21 удалено
  1. 51 19
      route/view_diff.py
  2. 1 1
      route/view_read.py
  3. 1 1
      version.json

+ 51 - 19
route/view_diff.py

@@ -26,32 +26,64 @@ def view_diff(name = 'Test', num_a = 1, num_b = 1):
             if first_raw_data == second_raw_data:
                 result = ''
             else:
-                i = 1
-                change_count = 0
-                diff_data = diff_match_patch().diff_prettyHtml(
-                    diff_match_patch().diff_main(first_raw_data, second_raw_data)
-                )
-                end_data = ''
+                diff_data = diff_match_patch().diff_main(first_raw_data, second_raw_data)
+                diff_data += [[0, '\n']]
+                
+                diff_data_2 = []
+                temp_list = []
+                line = 1
+                line_change = 0
+                for for_a in diff_data:
+                    line_split = re.findall(r'(.*\n)|(.+$)', for_a[1])
+                    if line_split:
+                        for for_b in line_split:
+                            if for_b[0] != '':
+                                if for_a[0] != 0:
+                                    line_change = 1
+                                
+                                temp_list += [[line, for_a[0], for_b[0].replace('\n', '')]]
 
-                diff_data = diff_data.replace('&para;<br>', '\n')
-                diff_data = diff_data.replace('<span>', '')
-                diff_data = diff_data.replace('</span>', '')
+                                if line_change == 1:
+                                    diff_data_2 += temp_list
+                                
+                                temp_list = []
+                                line_change = 0
+                                line += 1
+                            else:
+                                if for_a[0] != 0:
+                                    line_change = 1
 
-                re_data = re.findall(r'(?:(?:(?:(?!\n).)*)(?:\n)|(?:(?:(?!\n).)+)$)', diff_data)
-                for re_in_data in re_data:
-                    change_find_start = len(re.findall(r'<(?:del|ins) ', re_in_data))
-                    change_find_end = len(re.findall(r'<\/(?:del|ins)>', re_in_data))
+                                temp_list += [[line, for_a[0], for_b[1]]]
+                    else:
+                        if for_a[0] != 0:
+                            line_change = 1
 
-                    change_count += (change_find_start - change_find_end)
-                    if change_count != 0 or change_find_start != 0 or change_find_end != 0:
-                        end_data += str(i) + ' : ' + re_in_data
+                        temp_list += [[line, for_a[0], for_a[1]]]
 
-                    i += 1
+            result = '<table style="width: 100%;"><tr><td colspan="2">r' + first + ' ➤ r' + second + '</td></tr>'
+            result += '<tr><td style="width: 40px; user-select: none;">'
 
-                result = '<pre>' + end_data + '</pre>'
+            line = 0
+            for for_a in diff_data_2:
+                if line == 0:
+                    line = for_a[0]
+                    result += str(line) + '</td><td>'
+                else:
+                    if line != for_a[0]:
+                        line = for_a[0]
+                        result += '</td></tr><tr><td style="width: 40px; user-select: none;">' + str(line) + '</td><td>'
+
+                if for_a[1] == 1:
+                    result += '<span style="background: #eaf2c2;">' + for_a[2] + '</span>'
+                elif for_a[1] == 0:
+                    result += for_a[2]
+                else:
+                    result += '<span style="background: #fadad7;">' + for_a[2] + '</span>'
+
+            result += '</td></tr></table>'
 
             return easy_minify(flask.render_template(skin_check(),
-                imp = [name, wiki_set(), wiki_custom(), wiki_css(['(' + load_lang('compare') + ') (r' + first + ') (r' + second + ')', 0])],
+                imp = [name, wiki_set(), wiki_custom(), wiki_css(['(' + load_lang('compare') + ')', 0])],
                 data = result,
                 menu = [['history/' + url_pas(name), load_lang('return')]]
             ))

+ 1 - 1
route/view_read.py

@@ -213,7 +213,7 @@ def view_read(name = 'Test', doc_rev = '', doc_from = '', do_type = ''):
                 if flask.session and 'lastest_document' in flask.session:
                     end_data = '''
                         <div id="redirect">
-                            <a href="/w_from/''' + url_pas(flask.session['lastest_document']) + '''">''' + flask.session['lastest_document'] + '''</a>  <b>''' + name + '''</b>
+                            <a href="/w_from/''' + url_pas(flask.session['lastest_document']) + '''">''' + flask.session['lastest_document'] + '''</a>  <b>''' + name + '''</b>
                         </div>
                         <hr class="main_hr">
                     ''' + end_data

+ 1 - 1
version.json

@@ -1,6 +1,6 @@
 {
     "beta" : {
-        "r_ver" : "v3.4.6-RC3-dev173",
+        "r_ver" : "v3.4.6-RC3-dev174",
         "c_ver" : "3500361",
         "s_ver" : "3500111"
     }