|
@@ -190,28 +190,30 @@ class BookConverter {
|
|
let titleInfo = {};
|
|
let titleInfo = {};
|
|
let desc = {_n: 'description', 'title-info': titleInfo};
|
|
let desc = {_n: 'description', 'title-info': titleInfo};
|
|
let pars = [];
|
|
let pars = [];
|
|
- 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 inSubtitle = false;
|
|
|
|
+ let inJustify = true;
|
|
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 node = {};
|
|
|
|
|
|
+ let node = {_a: pars};
|
|
|
|
|
|
- const newParagraph = () => {
|
|
|
|
- node = {_n: 'p', _a: []};
|
|
|
|
- pars.push(node);
|
|
|
|
- };
|
|
|
|
|
|
+ let inPara = false;
|
|
|
|
|
|
const openTag = (name) => {
|
|
const openTag = (name) => {
|
|
|
|
+ if (name == 'p')
|
|
|
|
+ inPara = true;
|
|
let n = {_n: name, _a: [], _p: node};
|
|
let n = {_n: name, _a: [], _p: node};
|
|
node._a.push(n);
|
|
node._a.push(n);
|
|
node = n;
|
|
node = n;
|
|
};
|
|
};
|
|
|
|
|
|
const closeTag = (name) => {
|
|
const closeTag = (name) => {
|
|
|
|
+ if (name == 'p')
|
|
|
|
+ inPara = false;
|
|
if (node._n == name && node._p) {
|
|
if (node._n == name && node._p) {
|
|
node = node._p;
|
|
node = node._p;
|
|
}
|
|
}
|
|
@@ -223,7 +225,7 @@ class BookConverter {
|
|
node._a.push({_t: text});
|
|
node._a.push({_t: text});
|
|
};
|
|
};
|
|
|
|
|
|
- newParagraph();
|
|
|
|
|
|
+ openTag('p');
|
|
|
|
|
|
const onStartNode = (elemName, tail, singleTag, cutCounter, cutTag) => {// eslint-disable-line no-unused-vars
|
|
const onStartNode = (elemName, tail, singleTag, cutCounter, cutTag) => {// eslint-disable-line no-unused-vars
|
|
if (elemName == '')
|
|
if (elemName == '')
|
|
@@ -232,11 +234,18 @@ class BookConverter {
|
|
path += '/' + elemName;
|
|
path += '/' + elemName;
|
|
tag = elemName;
|
|
tag = elemName;
|
|
} else {
|
|
} else {
|
|
- if (!inSubtitle && (elemName == 'p' || elemName == 'dd' || elemName == 'li')) {
|
|
|
|
- newParagraph();
|
|
|
|
- }
|
|
|
|
|
|
+ if (inPara && elemName != 'i' && elemName != 'b')
|
|
|
|
+ closeTag('p');
|
|
|
|
|
|
switch (elemName) {
|
|
switch (elemName) {
|
|
|
|
+ case 'li':
|
|
|
|
+ case 'p':
|
|
|
|
+ case 'dd':
|
|
|
|
+ case 'h1':
|
|
|
|
+ case 'h2':
|
|
|
|
+ case 'h3':
|
|
|
|
+ openTag('p');
|
|
|
|
+ break;
|
|
case 'i':
|
|
case 'i':
|
|
openTag('emphasis');
|
|
openTag('emphasis');
|
|
break;
|
|
break;
|
|
@@ -249,8 +258,9 @@ class BookConverter {
|
|
inSubtitle = true;
|
|
inSubtitle = true;
|
|
}
|
|
}
|
|
|
|
|
|
- if (!inSubtitle && tail.indexOf('align="justify"') >= 0) {
|
|
|
|
- newParagraph();
|
|
|
|
|
|
+ if (tail.indexOf('align="justify"') >= 0) {
|
|
|
|
+ openTag('p');
|
|
|
|
+ inJustify = true;
|
|
}
|
|
}
|
|
|
|
|
|
break;
|
|
break;
|
|
@@ -276,6 +286,14 @@ class BookConverter {
|
|
tag = path.substr(i + 1);
|
|
tag = path.substr(i + 1);
|
|
} else {
|
|
} else {
|
|
switch (elemName) {
|
|
switch (elemName) {
|
|
|
|
+ case 'li':
|
|
|
|
+ case 'p':
|
|
|
|
+ case 'dd':
|
|
|
|
+ case 'h1':
|
|
|
|
+ case 'h2':
|
|
|
|
+ case 'h3':
|
|
|
|
+ closeTag('p');
|
|
|
|
+ break;
|
|
case 'i':
|
|
case 'i':
|
|
closeTag('emphasis');
|
|
closeTag('emphasis');
|
|
break;
|
|
break;
|
|
@@ -283,9 +301,15 @@ class BookConverter {
|
|
closeTag('strong');
|
|
closeTag('strong');
|
|
break;
|
|
break;
|
|
case 'div':
|
|
case 'div':
|
|
- if (inSubtitle)
|
|
|
|
|
|
+ if (inSubtitle) {
|
|
closeTag('subtitle');
|
|
closeTag('subtitle');
|
|
- inSubtitle = false;
|
|
|
|
|
|
+ inSubtitle = false;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (inJustify) {
|
|
|
|
+ closeTag('p');
|
|
|
|
+ inJustify = false;
|
|
|
|
+ }
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|