Surplus_Up (2DU) 6 лет назад
Родитель
Сommit
46ab127fde
4 измененных файлов с 50 добавлено и 40 удалено
  1. 19 10
      route/tool/set_mark/namu.py
  2. 1 1
      version.json
  3. 2 2
      views/main_css/js/do_open_folding.js
  4. 28 27
      views/main_css/js/render_html.js

+ 19 - 10
route/tool/set_mark/namu.py

@@ -161,13 +161,14 @@ def table_start(data):
             
     return data
 
-def middle_parser(data, fol_num, syntax_num, folding_num):
+def middle_parser(data, fol_num, syntax_num, folding_num, include_num):
     global end_data
     global plus_data
 
     middle_stack = 0
     middle_list = []
     middle_number = 0
+    html_number = 0
 
     middle_re = re.compile('(?:{{{((?:(?:(?! |{{{|}}}|<).)*) ?)|(}}}))')
     while 1:
@@ -259,13 +260,22 @@ def middle_parser(data, fol_num, syntax_num, folding_num):
                                                         if folding_num == 0:
                                                             folding_num = 1
                                                         
-                                                        data = re.sub('{{{#!folding ?((?:(?!\n).)*)\n?', '<div>' + str(folding_data[0]) + ' <div style="display: inline-block;"><a href="javascript:void(0);" onclick="folding(' + str(fol_num) + ');">[+]</a></div_end><div id="folding_' + str(fol_num) + '" style="display: none;"><div id="wiki_div" style="">\n', data, 1)
+                                                        data = re.sub('{{{#!folding ?((?:(?!\n).)*)\n?', '<div>' + str(folding_data[0]) + ' <div style="display: inline-block;"><a href="javascript:void(0);" onclick="do_open_folding(' + str(fol_num) + ', \'' + include_num + '\');">[+]</a></div_end><div id="' + include_num + 'folding_' + str(fol_num) + '" style="display: none;"><div id="wiki_div" style="">\n', data, 1)
                                                         
                                                         fol_num += 1
+
                                                     else:
-                                                        middle_list += ['span']
+                                                        middle_search = re.search('^#!html', middle_data[0])
+                                                        if middle_search:
+                                                            middle_list += ['div_end']
+                                                            
+                                                            html_number += 1
+                                                        
+                                                            data = middle_re.sub('<div id="' + include_num + 'render_contect_' + str(html_number) + '">', data, 1)
+                                                        else:
+                                                            middle_list += ['span']
 
-                                                        data = middle_re.sub('<span>', data, 1)
+                                                            data = middle_re.sub('<span>', data, 1)
                     else:
                         middle_list += ['code']
                         
@@ -362,12 +372,14 @@ def namu(conn, data, title, main_num, include_num):
     backlink = []
     end_data = []
     
+    include_num = include_num + '-' if include_num else ''
+    
     data = re.sub('<math>(?P<in>(?:(?!<\/math>).)+)<\/math>', '[math(\g<in>)]', data)
     data = html.escape(data)
 
     data = re.sub('\r\n', '\n', data)
 
-    t_data = middle_parser(data, 0, 0, 0)
+    t_data = middle_parser(data, 0, 0, 0, include_num)
     data = t_data[0]
 
     include_re = re.compile('\[include\(((?:(?!\)\]).)+)\)\]', re.I)
@@ -412,7 +424,7 @@ def namu(conn, data, title, main_num, include_num):
 
     data = re.sub('\r\n', '\n', data)
 
-    t_data = middle_parser(data, t_data[1][0], t_data[1][1], t_data[1][2])
+    t_data = middle_parser(data, t_data[1][0], t_data[1][1], t_data[1][2], include_num)
     data = t_data[0]
 
     data = re.sub('&amp;', '&', data)
@@ -873,8 +885,6 @@ def namu(conn, data, title, main_num, include_num):
     
     footdata_all = '<hr><ul id="footnote_data">'
     
-    include_num = include_num + '-' if include_num else ''
-    
     re_footnote = re.compile('(?:\[\*((?:(?! |\]).)*)(?: ((?:(?!(?:\[\*|\])).)+))?\]|(\[(?:각주|footnote)\]))')
     while 1:
         footnote = re_footnote.search(data)
@@ -1040,9 +1050,8 @@ def namu(conn, data, title, main_num, include_num):
 
     data = re.sub('\n', '<br>', data)
     if include_num == '':
-        data = '<div id="render_contect">' + data + '</div>'
         plus_data = '<script>render_html();</script>' + plus_data
     else:
-        plus_data = '<script>render_html(\'' + re.sub('\-$', '', include_num) + '\');</script>' + plus_data
+        plus_data = '<script>render_html(\'' + include_num + '\');</script>' + plus_data
 
     return [data, plus_data, backlink]

+ 1 - 1
version.json

@@ -1,6 +1,6 @@
 {
     "master" : {
-        "r_ver" : "v3.1.3-master-16",
+        "r_ver" : "v3.1.3-master-17",
         "c_ver" : "400003",
         "s_ver" : "2"
     }, "stable" : {

+ 2 - 2
views/main_css/js/folding.js → views/main_css/js/do_open_folding.js

@@ -1,5 +1,5 @@
-function folding(num) { 
-    var fol = document.getElementById('folding_' + num); 
+function do_open_folding(num, include_num) { 
+    var fol = document.getElementById(include_num + 'folding_' + num); 
     if(fol.style.display === 'inline-block' || fol.style.display === 'block') { 
         fol.style.display = 'none';
     } else {

+ 28 - 27
views/main_css/js/render_html.js

@@ -1,33 +1,34 @@
 function render_html(name = '') {
-    if(name === '') {
-        data = document.getElementById('render_contect').innerHTML;
-    } else {
-        data = document.getElementById(name).innerHTML;
-    }
+    var num = 0;
+    while(1) {
+        console.log(name + 'render_contect_' + String(num));
+        num += 1
+        if(document.getElementById(name + 'render_contect_' + String(num))) {
+            data = document.getElementById(name + 'render_contect_' + String(num)).innerHTML;
 
-    t_data = ['b', 'i', 's', 'del']
-    for(var key in t_data) {
-        var patt = new RegExp('&lt;' + t_data[key] + '&gt;((?:(?!&lt;\/' + t_data[key] + '&gt;).)*)&lt;\/' + t_data[key] + '&gt;', 'ig');
-        data = data.replace(patt, '<' + t_data[key] + '>$1</' + t_data[key] + '>');
-    }
-    
-    src_list = {
-        'www.youtube.com' : '1'
-    }
-    data = data.replace(/&lt;iframe( (?:(?:(?!&gt;).)+))&gt;&lt;\/iframe&gt;/g, function(full, in_data) {
-        src_data = data.match(/ src=['"]https:\/\/([^/'"]+)(?:[^'"]+)['"](?: |$)/);
-        if(src_data) {
-            if(src_list[src_data[1]]) {
-                return '<iframe' + in_data + '></iframe>';
-            } else {
-                return full;
+            t_data = ['b', 'i', 's', 'del']
+            for(var key in t_data) {
+                var patt = new RegExp('&lt;' + t_data[key] + '&gt;((?:(?!&lt;\/' + t_data[key] + '&gt;).)*)&lt;\/' + t_data[key] + '&gt;', 'ig');
+                data = data.replace(patt, '<' + t_data[key] + '>$1</' + t_data[key] + '>');
+            }
+            
+            src_list = {
+                'www.youtube.com' : '1'
             }
+            data = data.replace(/&lt;iframe( (?:(?:(?!&gt;).)+))&gt;&lt;\/iframe&gt;/g, function(full, in_data) {
+                src_data = data.match(/ src=['"]https:\/\/([^/'"]+)(?:[^'"]+)['"](?: |$)/);
+                if(src_data) {
+                    if(src_list[src_data[1]]) {
+                        return '<iframe' + in_data + '></iframe>';
+                    } else {
+                        return full;
+                    }
+                }
+            });
+            
+            document.getElementById(name + 'render_contect_' + String(num)).innerHTML = data;
+        } else {
+            break;
         }
-    });
-    
-    if(name === '') {
-        document.getElementById('render_contect').innerHTML = data;
-    } else {
-        document.getElementById(name).innerHTML = data;
     }
 }