Procházet zdrojové kódy

목차 파싱 분리

2DU před 9 roky
rodič
revize
88ee9c3078
1 změnil soubory, kde provedl 89 přidání a 82 odebrání
  1. 89 82
      mark.py

+ 89 - 82
mark.py

@@ -227,6 +227,92 @@ def mid_pas(data, fol_num, include):
             
     return((data, fol_num))
 
+def toc_pas(data, title):
+    i = [0, 0, 0, 0, 0, 0, 0]
+    last = 0
+    span = ''
+    rtoc = '<div id="toc"><span id="toc-name">목차</span><br><br>'
+    while(True):
+        i[0] += 1
+        m = re.search('(={1,6})\s?([^=]*)\s?(?:={1,6})(?:\s+)?\n', data)
+        if(m):
+            result = m.groups()
+            wiki = len(result[0])
+            if(last < wiki):
+                last = wiki
+            else:
+                last = wiki
+                if(wiki == 1):
+                    i[2] = 0
+                    i[3] = 0
+                    i[4] = 0
+                    i[5] = 0
+                    i[6] = 0
+                elif(wiki == 2):
+                    i[3] = 0
+                    i[4] = 0
+                    i[5] = 0
+                    i[6] = 0
+                elif(wiki == 3):
+                    i[4] = 0
+                    i[5] = 0
+                    i[6] = 0
+                elif(wiki == 4):
+                    i[5] = 0
+                    i[6] = 0
+                elif(wiki == 5):
+                    i[6] = 0
+            if(wiki == 1):
+                i[1] += 1
+            elif(wiki == 2):
+                i[2] += 1
+            elif(wiki == 3):
+                i[3] += 1
+            elif(wiki == 4):
+                i[4] += 1
+            elif(wiki == 5):
+                i[5] += 1
+            else:
+                i[6] += 1
+
+            toc = str(i[1]) + '.' + str(i[2]) + '.' + str(i[3]) + '.' + str(i[4]) + '.' + str(i[5]) + '.' + str(i[6]) + '.'
+
+            toc = re.sub("(?P<in>[0-9]0(?:[0]*)?)\.", '\g<in>#.', toc)
+
+            toc = re.sub("0\.", '', toc)
+            toc = re.sub("#\.", '.', toc)
+            toc = re.sub("\.$", '', toc)
+
+            test = re.search('([0-9]*)(\.([0-9]*))?(\.([0-9]*))?(\.([0-9]*))?(\.([0-9]*))?', toc)
+            if(test):
+                g = test.groups()
+                if(g[4]):
+                    span = '<span id="out"></span>' * 4
+                elif(g[3]):
+                    span = '<span id="out"></span>' * 3
+                elif(g[2]):
+                    span = '<span id="out"></span>' * 2
+                elif(g[1]):
+                    span = '<span id="out"></span>'
+                else:
+                    span = ''
+
+            rtoc += span + '<a href="#s-' + toc + '">' + toc + '</a>. ' + result[1] + '<br>'
+
+            c = re.sub(" $", "", result[1])
+            d = c
+            c = re.sub("\[\[(([^|]*)\|)?(?P<in>[^\]]*)\]\]", "\g<in>", c)
+
+            data = re.sub('(={1,6})\s?([^=]*)\s?(?:={1,6})(?:\s+)?\n', '<tablenobr><h' + str(wiki) + ' id="' + c + '"><a href="#toc" id="s-' + toc + '">' + toc + '.</a> ' + d + ' <span style="font-size:11px;">[<a href="/edit/' + url_pas(title) + '/section/' + str(i[0]) + '">편집</a>]</span></h' + str(wiki) + '>', data, 1)
+        else:
+            rtoc += '</div>'
+            
+            break
+    
+    data = re.sub("\[목차\]", rtoc, data)
+
+    return(data)
+
 def backlink_plus(name, link, backtype):
     conn = pymysql.connect(user = set_data['user'], password = set_data['pw'], charset = 'utf8mb4', db = set_data['db'])
     curs = conn.cursor(pymysql.cursors.DictCursor)
@@ -295,6 +381,8 @@ def namumark(title, data):
                                 a = re.sub("([^= ,]*)\=([^,]*)", "", a, 1)
                             else:
                                 break       
+
+                    in_data = toc_pas(in_data, results[0])
                                 
                     data = include.sub('\n<nobr><div>' + in_data + '</div><nobr>\n', data, 1)
                 else:
@@ -338,88 +426,7 @@ def namumark(title, data):
         
     data = re.sub("(\n)(?P<in>\r\n(={1,6})\s?([^=]*)\s?(?:={1,6})(?:\s+)?\n)", "\g<in>", data)
     
-    i = [0, 0, 0, 0, 0, 0, 0]
-    last = 0
-    span = ''
-    rtoc = '<div id="toc"><span id="toc-name">목차</span><br><br>'
-    while(True):
-        i[0] += 1
-        m = re.search('(={1,6})\s?([^=]*)\s?(?:={1,6})(?:\s+)?\n', data)
-        if(m):
-            result = m.groups()
-            wiki = len(result[0])
-            if(last < wiki):
-                last = wiki
-            else:
-                last = wiki
-                if(wiki == 1):
-                    i[2] = 0
-                    i[3] = 0
-                    i[4] = 0
-                    i[5] = 0
-                    i[6] = 0
-                elif(wiki == 2):
-                    i[3] = 0
-                    i[4] = 0
-                    i[5] = 0
-                    i[6] = 0
-                elif(wiki == 3):
-                    i[4] = 0
-                    i[5] = 0
-                    i[6] = 0
-                elif(wiki == 4):
-                    i[5] = 0
-                    i[6] = 0
-                elif(wiki == 5):
-                    i[6] = 0
-            if(wiki == 1):
-                i[1] += 1
-            elif(wiki == 2):
-                i[2] += 1
-            elif(wiki == 3):
-                i[3] += 1
-            elif(wiki == 4):
-                i[4] += 1
-            elif(wiki == 5):
-                i[5] += 1
-            else:
-                i[6] += 1
-
-            toc = str(i[1]) + '.' + str(i[2]) + '.' + str(i[3]) + '.' + str(i[4]) + '.' + str(i[5]) + '.' + str(i[6]) + '.'
-
-            toc = re.sub("(?P<in>[0-9]0(?:[0]*)?)\.", '\g<in>#.', toc)
-
-            toc = re.sub("0\.", '', toc)
-            toc = re.sub("#\.", '.', toc)
-            toc = re.sub("\.$", '', toc)
-
-            test = re.search('([0-9]*)(\.([0-9]*))?(\.([0-9]*))?(\.([0-9]*))?(\.([0-9]*))?', toc)
-            if(test):
-                g = test.groups()
-                if(g[4]):
-                    span = '<span id="out"></span>' * 4
-                elif(g[3]):
-                    span = '<span id="out"></span>' * 3
-                elif(g[2]):
-                    span = '<span id="out"></span>' * 2
-                elif(g[1]):
-                    span = '<span id="out"></span>'
-                else:
-                    span = ''
-
-            rtoc += span + '<a href="#s-' + toc + '">' + toc + '</a>. ' + result[1] + '<br>'
-
-            c = re.sub(" $", "", result[1])
-            d = c
-            c = re.sub("\[\[(([^|]*)\|)?(?P<in>[^\]]*)\]\]", "\g<in>", c)
-
-            data = re.sub('(={1,6})\s?([^=]*)\s?(?:={1,6})(?:\s+)?\n', '<tablenobr><h' + str(wiki) + ' id="' + c + '"><a href="#toc" id="s-' + toc + '">' + toc + '.</a> ' + d + ' <span style="font-size:11px;">[<a href="/edit/' + url_pas(title) + '/section/' + str(i[0]) + '">편집</a>]</span></h' + str(wiki) + '>', data, 1);
-        else:
-            rtoc += '</div>'
-            
-            break
-    
-    data = re.sub("\[목차\]", rtoc, data)
+    data = toc_pas(data, title)
     
     category = ''
     while(True):