diff --git a/server/core/Reader/BookConverter/ConvertBase.js b/server/core/Reader/BookConverter/ConvertBase.js
index 45346586..0f2ba697 100644
--- a/server/core/Reader/BookConverter/ConvertBase.js
+++ b/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 = '';
- out += '';
- out += this.formatFb2Node(fb2);
- out += '';
- return out;
- }
-
- formatFb2Node(node, name) {
- let out = '';
-
- if (Array.isArray(node)) {
- for (const n of node) {
- out += this.formatFb2Node(n);
+ 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],
}
- } 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;
+ }, 'utf-8', this.repSpaces);
- let attrs = '';
- if (node._attrs) {
- for (let attrName in node._attrs) {
- attrs += ` ${attrName}="${node._attrs[attrName]}"`;
- }
- }
-
- 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 += ''
- else
- out += `${tOpen}${tBody}${tClose}`;
- }
- return out;
+ return out.replace(/
\s*?<\/p>/g, '');
}
}