Bläddra i källkod

Рефакторинг

Book Pauk 4 år sedan
förälder
incheckning
fd9ec736d7
1 ändrade filer med 7 tillägg och 53 borttagningar
  1. 7 53
      server/core/Reader/BookConverter/ConvertBase.js

+ 7 - 53
server/core/Reader/BookConverter/ConvertBase.js

@@ -5,6 +5,7 @@ const he = require('he');
 const LimitedQueue = require('../../LimitedQueue');
 const textUtils = require('./textUtils');
 const utils = require('../../utils');
+const xmlParser = require('../../xmlParser');
 
 const queue = new LimitedQueue(3, 20, 2*60*1000);//2 минуты ожидание подвижек
 
@@ -102,61 +103,14 @@ class ConvertBase {
     }
 
     formatFb2(fb2) {
-        let out = '<?xml version="1.0" encoding="utf-8"?>';
-        out += '<FictionBook xmlns="http://www.gribuser.ru/xml/fictionbook/2.0" xmlns:l="http://www.w3.org/1999/xlink">';
-        out += this.formatFb2Node(fb2);
-        out += '</FictionBook>';
-        return out;
-    }
-
-    formatFb2Node(node, name) {
-        let out = '';
-
-        if (Array.isArray(node)) {
-            for (const n of node) {
-                out += this.formatFb2Node(n);
-            }
-        } else if (typeof node == 'string') {
-            if (name)
-                out += `<${name}>${this.repSpaces(node)}</${name}>`;
-            else
-                out += this.repSpaces(node);
-        } else {
-            if (node._n)
-                name = node._n;
-
-            let attrs = '';
-            if (node._attrs) {
-                for (let attrName in node._attrs) {
-                    attrs += ` ${attrName}="${node._attrs[attrName]}"`;
-                }
+        const out = xmlParser.formatXml({
+            FictionBook: {
+                _attrs: {xmlns: 'http://www.gribuser.ru/xml/fictionbook/2.0', 'xmlns:l': 'http://www.w3.org/1999/xlink'},
+                _a: [fb2],
             }
+        }, 'utf-8', this.repSpaces);
 
-            let tOpen = '';
-            let tBody = '';
-            let tClose = '';
-            if (name)
-                tOpen += `<${name}${attrs}>`;
-            if (node.hasOwnProperty('_t'))
-                tBody += this.repSpaces(node._t);
-
-            for (let nodeName in node) {
-                if (nodeName && nodeName[0] == '_' && nodeName != '_a')
-                    continue;
-
-                const n = node[nodeName];
-                tBody += this.formatFb2Node(n, nodeName);
-            }
-            
-            if (name)
-                tClose += `</${name}>`;
-
-            if (attrs == '' && name == 'p' && tBody.trim() == '')
-                out += '<empty-line/>'
-            else
-                out += `${tOpen}${tBody}${tClose}`;
-        }
-        return out;
+        return out.replace(/<p>\s*?<\/p>/g, '<empty-line/>');
     }
 }