Улчшение парсинга samlib
This commit is contained in:
@@ -237,6 +237,8 @@ class BookConverter {
|
|||||||
let node = {_a: pars};
|
let node = {_a: pars};
|
||||||
|
|
||||||
let inPara = false;
|
let inPara = false;
|
||||||
|
let italic = false;
|
||||||
|
let bold = false;
|
||||||
|
|
||||||
const openTag = (name) => {
|
const openTag = (name) => {
|
||||||
if (name == 'p')
|
if (name == 'p')
|
||||||
@@ -249,8 +251,11 @@ class BookConverter {
|
|||||||
const closeTag = (name) => {
|
const closeTag = (name) => {
|
||||||
if (name == 'p')
|
if (name == 'p')
|
||||||
inPara = false;
|
inPara = false;
|
||||||
if (node._n == name && node._p) {
|
if (node._p) {
|
||||||
|
const exact = (node._n == name);
|
||||||
node = node._p;
|
node = node._p;
|
||||||
|
if (!exact)
|
||||||
|
closeTag(name);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -283,9 +288,11 @@ class BookConverter {
|
|||||||
break;
|
break;
|
||||||
case 'i':
|
case 'i':
|
||||||
openTag('emphasis');
|
openTag('emphasis');
|
||||||
|
italic = true;
|
||||||
break;
|
break;
|
||||||
case 'b':
|
case 'b':
|
||||||
openTag('strong');
|
openTag('strong');
|
||||||
|
bold = true;
|
||||||
break;
|
break;
|
||||||
case 'div':
|
case 'div':
|
||||||
if (tail.indexOf('align="center"') >= 0) {
|
if (tail.indexOf('align="center"') >= 0) {
|
||||||
@@ -331,9 +338,11 @@ class BookConverter {
|
|||||||
break;
|
break;
|
||||||
case 'i':
|
case 'i':
|
||||||
closeTag('emphasis');
|
closeTag('emphasis');
|
||||||
|
italic = false;
|
||||||
break;
|
break;
|
||||||
case 'b':
|
case 'b':
|
||||||
closeTag('strong');
|
closeTag('strong');
|
||||||
|
bold = false;
|
||||||
break;
|
break;
|
||||||
case 'div':
|
case 'div':
|
||||||
if (inSubtitle) {
|
if (inSubtitle) {
|
||||||
@@ -381,8 +390,13 @@ class BookConverter {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let tOpen = (bold ? '<strong>' : '');
|
||||||
|
tOpen += (italic ? '<emphasis>' : '');
|
||||||
|
let tClose = (italic ? '</emphasis>' : '');
|
||||||
|
tClose += (bold ? '</strong>' : '');
|
||||||
|
|
||||||
if (inText)
|
if (inText)
|
||||||
growParagraph(text);
|
growParagraph(`${tOpen}${text}${tClose}`);
|
||||||
};
|
};
|
||||||
|
|
||||||
sax.parseSync(repSpaces(this.decode(data).toString()), {
|
sax.parseSync(repSpaces(this.decode(data).toString()), {
|
||||||
|
|||||||
Reference in New Issue
Block a user