|
@@ -227,24 +227,44 @@ class BookConverter {
|
|
|
|
|
|
let inText = false;
|
|
let inText = false;
|
|
let center = false;
|
|
let center = false;
|
|
|
|
+ //let italic = false;
|
|
|
|
+ //let bold = false;
|
|
|
|
+ let node = {};
|
|
|
|
|
|
const newParagraph = () => {
|
|
const newParagraph = () => {
|
|
- pars.push({_n: 'p', _t: ''});
|
|
|
|
|
|
+ node = {_n: 'p', _t: ''};
|
|
|
|
+ pars.push(node);
|
|
};
|
|
};
|
|
|
|
|
|
const newSubTitle = () => {
|
|
const newSubTitle = () => {
|
|
- pars.push({_n: 'subtitle', _t: ''});
|
|
|
|
|
|
+ node = {_n: 'subtitle', _t: ''};
|
|
|
|
+ pars.push(node);
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ const newItalic = () => {
|
|
|
|
+ let n = {_n: 'emphasis', _t: ''};
|
|
|
|
+ if (!node._a)
|
|
|
|
+ node._a = [];
|
|
|
|
+ node._a.push(n);
|
|
|
|
+ node = n;
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ const newBold = () => {
|
|
|
|
+ let n = {_n: 'strong', _t: ''};
|
|
|
|
+ if (!node._a)
|
|
|
|
+ node._a = [];
|
|
|
|
+ node._a.push(n);
|
|
|
|
+ node = n;
|
|
};
|
|
};
|
|
|
|
|
|
const growParagraph = (text) => {
|
|
const growParagraph = (text) => {
|
|
- const l = pars.length;
|
|
|
|
- if (l) {
|
|
|
|
- if (pars[l - 1]._t == '')
|
|
|
|
- text = text.trimLeft();
|
|
|
|
- pars[l - 1]._t += text;
|
|
|
|
- }
|
|
|
|
|
|
+ if (node._t == '')
|
|
|
|
+ text = text.trimLeft();
|
|
|
|
+ node._t += text;
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+ newParagraph();
|
|
|
|
+
|
|
const parser = new EasySAXParser();
|
|
const parser = new EasySAXParser();
|
|
|
|
|
|
parser.on('error', (msgError) => {// eslint-disable-line no-unused-vars
|
|
parser.on('error', (msgError) => {// eslint-disable-line no-unused-vars
|
|
@@ -261,16 +281,18 @@ class BookConverter {
|
|
|
|
|
|
switch (elemName) {
|
|
switch (elemName) {
|
|
case 'i':
|
|
case 'i':
|
|
- growParagraph('<emphasis>');
|
|
|
|
|
|
+ newItalic();
|
|
|
|
+ //italic = true;
|
|
break;
|
|
break;
|
|
case 'b':
|
|
case 'b':
|
|
- growParagraph('<strong>');
|
|
|
|
|
|
+ newBold();
|
|
|
|
+ //bold = true;
|
|
break;
|
|
break;
|
|
case 'div':
|
|
case 'div':
|
|
var a = getAttr();
|
|
var a = getAttr();
|
|
if (a && a.align == 'center') {
|
|
if (a && a.align == 'center') {
|
|
- center = true;
|
|
|
|
newSubTitle();
|
|
newSubTitle();
|
|
|
|
+ center = true;
|
|
}
|
|
}
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
@@ -297,10 +319,10 @@ class BookConverter {
|
|
} else {
|
|
} else {
|
|
switch (elemName) {
|
|
switch (elemName) {
|
|
case 'i':
|
|
case 'i':
|
|
- growParagraph('</emphasis>');
|
|
|
|
|
|
+ //italic = false;
|
|
break;
|
|
break;
|
|
case 'b':
|
|
case 'b':
|
|
- growParagraph('</strong>');
|
|
|
|
|
|
+ //bold = false;
|
|
break;
|
|
break;
|
|
case 'div':
|
|
case 'div':
|
|
center = false;
|
|
center = false;
|
|
@@ -397,17 +419,17 @@ class BookConverter {
|
|
throw new Error(`malformed fb2 object`);
|
|
throw new Error(`malformed fb2 object`);
|
|
|
|
|
|
out += `<${name}>`;
|
|
out += `<${name}>`;
|
|
- if (node.hasOwnProperty('_t')) {
|
|
|
|
|
|
+ if (node.hasOwnProperty('_t'))
|
|
out += node._t;
|
|
out += node._t;
|
|
- } else {
|
|
|
|
- for (let nodeName in node) {
|
|
|
|
- if (nodeName == '_n')
|
|
|
|
- continue;
|
|
|
|
|
|
|
|
- const n = node[nodeName];
|
|
|
|
- out += this.formatFb2Node(n, nodeName);
|
|
|
|
- }
|
|
|
|
|
|
+ for (let nodeName in node) {
|
|
|
|
+ if (nodeName == '_n' || nodeName == '_t')
|
|
|
|
+ continue;
|
|
|
|
+
|
|
|
|
+ const n = node[nodeName];
|
|
|
|
+ out += this.formatFb2Node(n, nodeName);
|
|
}
|
|
}
|
|
|
|
+
|
|
out += `</${name}>`;
|
|
out += `</${name}>`;
|
|
}
|
|
}
|
|
return out;
|
|
return out;
|