Surplus_Up (2DU) 6 лет назад
Родитель
Сommit
f690930075
3 измененных файлов с 71 добавлено и 37 удалено
  1. 1 1
      route/tool/func.py
  2. 1 1
      views/main_css/css/main.css
  3. 69 35
      views/main_css/js/render_namumark.js

+ 1 - 1
route/tool/func.py

@@ -396,7 +396,7 @@ def other2(data):
         data += ['']
 
     req_list = ''
-    main_css_ver = 5
+    main_css_ver = 6
 
     if not 'main_css_load' in flask.session or not 'main_css_ver' in flask.session or flask.session['main_css_ver'] != main_css_ver:
         for i_data in os.listdir(os.path.join("views", "main_css", "css")):

+ 1 - 1
views/main_css/css/main.css

@@ -45,4 +45,4 @@ blockquote { background-image: url(/views/acme/img/quote.png); background-positi
 #origin { display: none; }
 .all_in_data { display: block; width: 100%; }
 .table_safe { max-width: 100%; }
-.change_space { white-space: pre; }
+.change_space { white-space: pre-line; }

+ 69 - 35
views/main_css/js/render_namumark.js

@@ -18,14 +18,23 @@ function render_namumark(target) {
         xhr.send(null);
         
         xhr.onreadystatechange = function() {
-            if(this.readyState === 4 && this.status === 200) {
-                if(JSON.parse(this.responseText)['exist'] !== '1') {
-                    document.getElementsByClassName(link_data[1])[0].id = "not_thing";
+            var i = 0;
+            while(1) {
+                if(document.getElementsByClassName(link_data[1])[i]) {
+                    if(this.readyState === 4 && this.status === 200) {
+                        if(JSON.parse(this.responseText)['exist'] !== '1') {
+                            document.getElementsByClassName(link_data[1])[i].id = "not_thing";
+                        } else {
+                            document.getElementsByClassName(link_data[1])[i].id = "";
+                        }
+                    } else {
+                        document.getElementsByClassName(link_data[1])[i].id = "not_thing";
+                    }
+
+                    i += 1;
                 } else {
-                    document.getElementsByClassName(link_data[1])[0].id = "";
+                    break;
                 }
-            } else {
-                document.getElementsByClassName(link_data[1])[0].id = "not_thing";
             }
         }
     }
@@ -64,7 +73,6 @@ function render_namumark(target) {
                             '';
                         }
                     } else {
-                        console.log(file_data[1]);
                         document.getElementById(file_data[1]).innerHTML = '' +
                             '<a href="/upload?name=' + encodeURIComponent(file_data[0]) + '" id="not_thing">' + file_data[0] + '</a>' +
                         '';
@@ -212,7 +220,7 @@ function render_namumark(target) {
 
     var nowiki_num = 0;
     var nowiki_list = {};
-    data = data.replace(/<code>((?:(?!<\/code>).)+)<\/code>/gm, function(all, in_data) {
+    data = data.replace(/<code>(\n*((?:(?!<\/code>).)+\n*)+)<\/code>/g, function(all, in_data) {
         nowiki_num += 1;
         nowiki_list['nowiki_' + String(nowiki_num)] = in_data;
 
@@ -250,36 +258,61 @@ function render_namumark(target) {
     var file_list = [];
     var link_num = 0;
     var file_num = 0;
-    var category = '<div id="cate_all"><hr><div id="cate">Category : '
-    data = data.replace(/\[\[((?:(?!]]).)+)]]/g, function(all, in_data) {
-        if(in_data.match(/^(?:category|분류):/i)) {
-            category += '<a href="' + encodeURIComponent(in_data) + '">' + in_data + '</a> | ';
-
-            return '';
-        } else if(in_data.match(/^(?:file|파일):/i)) {
-            file_list.push([in_data.replace(/^(?:file|파일):/i, ''), 'file_' + String(file_num)]);
-            file_num += 1;
-            
-            return '<span id="file_' + String(file_num - 1) + '"></span>';
-        } else if(in_data.match(/^http(?:s)?:\/\//i)) {
-            var link_part = divi_link(in_data);
-            
-            var front_data = link_part[0];
-            var back_data = link_part[1];
+    var category = ''
+    while(1) {
+        if(data.match(/\[\[((?:(?!\[\[|]]).)+)]]/)) {
+            data = data.replace(/\[\[((?:(?!\[\[|]]).)+)]]/, function(all, in_data) {
+                if(in_data.match(/^(?:category|분류):/i)) {
+                    var back_data = in_data.replace(/^(?:category|분류):/i, '');
+                    var front_data = back_data;
+                    back_data = 'category:' + back_data.replace(/#blur$/, '');
+                    
+                    if(front_data.match(/#blur$/)) {
+                        front_data = '#blur';
+                    }
 
-            return '<a id="out_link" href="' + back_data + '">' + front_data + '</a>'; 
-        } else {
-            var link_part = divi_link(in_data);
-            
-            var front_data = link_part[0];
-            var back_data = link_part[1];
+                    link_list.push([back_data, 'link_' + String(link_num)]);
+                    link_num += 1;
+
+                    if(category === '') {
+                        category += '<div id="cate_all"><hr><div id="cate">Category : '
+                    }
+
+                    category += '<a class="link_' + String(link_num - 1) + '" href="' + encodeURIComponent(back_data) + '">' + front_data + '</a> | ';
+
+                    return '';
+                } else if(in_data.match(/^(?:file|파일):/i)) {
+                    file_list.push([in_data.replace(/^(?:file|파일):/i, ''), 'file_' + String(file_num)]);
+                    file_num += 1;
+                    
+                    return '<span id="file_' + String(file_num - 1) + '"></span>';
+                } else if(in_data.match(/^http(?:s)?:\/\//i)) {
+                    var link_part = divi_link(in_data);
+                    
+                    var front_data = link_part[0];
+                    var back_data = link_part[1];
+
+                    return '<a id="out_link" href="' + back_data + '">' + front_data + '</a>'; 
+                } else {
+                    var link_part = divi_link(in_data);
+                    
+                    var front_data = link_part[0];
+                    var back_data = link_part[1];
 
-            link_list.push([back_data, 'link_' + String(link_num)]);
-            link_num += 1;
+                    link_list.push([back_data, 'link_' + String(link_num)]);
+                    link_num += 1;
 
-            return '<a class="link_' + String(link_num - 1) + '" href="/w/' + encodeURIComponent(back_data) + '">' + front_data + '</a>'; 
+                    return '<a class="link_' + String(link_num - 1) + '" href="/w/' + encodeURIComponent(back_data) + '">' + front_data + '</a>'; 
+                }
+            });
+        } else {
+            break;
         }
-    });
+    }
+
+    if(category !== '') {
+        category = category.replace(/ \| $/, '') + '</div></div>'
+    }
 
     data = data.replace(/\[([^(\]]+)\(((?:(?!\)]).)+)\)]/g, function(all, name, in_data) {
         if(name.match(/^youtube|kakaotv|nicovideo$/i)) {
@@ -401,7 +434,7 @@ function render_namumark(target) {
     data = data.replace(/\[([^\]]+)\]/g, function(all, name) {
         if(name.match(/^br$/i)) {
             return '\n'
-        } else if(name.match(/^목차$/i)) {
+        } else if(name.match(/^목차|tableofcontents$/i)) {
             return toc_data;
         } else if(name.match(/^date|datetime$/i)) {
             return get_today();
@@ -485,6 +518,7 @@ function render_namumark(target) {
     data = data.replace(/\n/g, '<br>');
 
     data = data.replace(/&amp;/g, '&');
+    data += category;
 
     document.getElementById(target).innerHTML = data;