Поправки багов

This commit is contained in:
Book Pauk
2019-01-26 08:23:53 +07:00
parent 8520b992ec
commit bf6b99d369

View File

@@ -240,45 +240,33 @@ class BookConverter {
let body = {_n: 'body', section: {_a: [pars]}}; let body = {_n: 'body', section: {_a: [pars]}};
let fb2 = [desc, body]; let fb2 = [desc, body];
let inSubtitle = false;
let path = ''; let path = '';
let tag = '';// eslint-disable-line no-unused-vars let tag = '';// eslint-disable-line no-unused-vars
let inText = false; let inText = false;
let center = false;
//let italic = false;
//let bold = false;
let node = {}; let node = {};
const newParagraph = () => { const newParagraph = () => {
node = {_n: 'p', _t: ''}; node = {_n: 'p', _a: []};
pars.push(node); pars.push(node);
}; };
const newSubTitle = () => { const openTag = (name) => {
node = {_n: 'subtitle', _t: ''}; let n = {_n: name, _a: [], _p: node};
pars.push(node);
};
const newItalic = () => {
let n = {_n: 'emphasis', _t: ''};
if (!node._a)
node._a = [];
node._a.push(n); node._a.push(n);
node = n; node = n;
}; };
const newBold = () => { const closeTag = (name) => {
let n = {_n: 'strong', _t: ''}; if (node._n == name && node._p)
if (!node._a) node = node._p;
node._a = [];
node._a.push(n);
node = n;
}; };
const growParagraph = (text) => { const growParagraph = (text) => {
if (node._t == '') if (node._a.length == 0)
text = text.trimLeft(); text = text.trimLeft();
node._t += text; node._a.push({_t: text});
}; };
newParagraph(); newParagraph();
@@ -297,23 +285,21 @@ class BookConverter {
path += '/' + elemName; path += '/' + elemName;
tag = elemName; tag = elemName;
} else { } else {
if (!center && (elemName == 'p' || elemName == 'dd')) { if (!inSubtitle && (elemName == 'p' || elemName == 'dd')) {
newParagraph(); newParagraph();
} }
switch (elemName) { switch (elemName) {
case 'i': case 'i':
newItalic(); openTag('emphasis');
//italic = true;
break; break;
case 'b': case 'b':
newBold(); openTag('strong');
//bold = true;
break; break;
case 'div': case 'div':
if (tail == 'center') { if (tail == 'center') {
newSubTitle(); openTag('subtitle');
center = true; inSubtitle = true;
} }
break; break;
} }
@@ -338,13 +324,13 @@ class BookConverter {
} else { } else {
switch (elemName) { switch (elemName) {
case 'i': case 'i':
//italic = false; closeTag('emphasis');
break; break;
case 'b': case 'b':
//bold = false; closeTag('strong');
break; break;
case 'div': case 'div':
center = false; closeTag('subtitle');
break; break;
} }
} }
@@ -415,26 +401,29 @@ class BookConverter {
out += this.formatFb2Node(n); out += this.formatFb2Node(n);
} }
} else if (typeof node == 'string') { } else if (typeof node == 'string') {
out += `<${name}>${node}</${name}>`; if (name)
out += `<${name}>${node}</${name}>`;
else
out += node;
} else { } else {
if (node._n) if (node._n)
name = node._n; name = node._n;
if (!name)
throw new Error(`malformed fb2 object`);
out += `<${name}>`; if (name)
out += `<${name}>`;
if (node.hasOwnProperty('_t')) if (node.hasOwnProperty('_t'))
out += node._t; out += node._t;
for (let nodeName in node) { for (let nodeName in node) {
if (nodeName == '_n' || nodeName == '_t') if (nodeName && nodeName[0] == '_' && nodeName != '_a')
continue; continue;
const n = node[nodeName]; const n = node[nodeName];
out += this.formatFb2Node(n, nodeName); out += this.formatFb2Node(n, nodeName);
} }
out += `</${name}>`; if (name)
out += `</${name}>`;
} }
return out; return out;
} }