Selaa lähdekoodia

Улучшение парсинга fb2

Book Pauk 6 vuotta sitten
vanhempi
commit
0d27dabd62
1 muutettua tiedostoa jossa 47 lisäystä ja 43 poistoa
  1. 47 43
      client/components/Reader/share/BookParser.js

+ 47 - 43
client/components/Reader/share/BookParser.js

@@ -63,7 +63,8 @@ export default class BookParser {
 
 
         const growParagraph = (text, len) => {
         const growParagraph = (text, len) => {
             if (paraIndex < 0) {
             if (paraIndex < 0) {
-                newParagraph(text, len);
+                newParagraph(' ', 1);
+                growParagraph(text, len);
                 return;
                 return;
             }
             }
 
 
@@ -96,60 +97,63 @@ export default class BookParser {
             tag = elemName;
             tag = elemName;
             path += '/' + elemName;
             path += '/' + elemName;
 
 
-            if ((tag == 'p' || tag == 'empty-line' || tag == 'v') && path.indexOf('/fictionbook/body/section') == 0) {
-                newParagraph(' ', 1);
-            }
+            if (path.indexOf('/fictionbook/body') == 0) {
+                if (tag == 'title') {
+                    newParagraph(' ', 1);
+                    bold = true;
+                    center = true;
+                }
 
 
-            if (tag == 'emphasis' || tag == 'strong') {
-                growParagraph(`<${tag}>`, 0);
-            }
+                if (tag == 'emphasis' || tag == 'strong') {
+                    growParagraph(`<${tag}>`, 0);
+                }
 
 
-            if (tag == 'title') {
-                newParagraph(' ', 1);
-                bold = true;
-                center = true;
-            }
+                if ((tag == 'p' || tag == 'empty-line' || tag == 'v')) {
+                    newParagraph(' ', 1);
+                }
 
 
-            if (tag == 'subtitle') {
-                newParagraph(' ', 1);
-                bold = true;
-            }
+                if (tag == 'subtitle') {
+                    newParagraph(' ', 1);
+                    bold = true;
+                }
 
 
-            if (tag == 'epigraph') {
-                italic = true;
-            }
+                if (tag == 'epigraph') {
+                    italic = true;
+                }
 
 
-            if (tag == 'stanza') {
-                newParagraph(' ', 1);
-            }
+                if (tag == 'stanza') {
+                    newParagraph(' ', 1);
+                }
 
 
-            if (tag == 'text-author') {
-                newParagraph(' <s> <s> <s> ', 4);
+                if (tag == 'text-author') {
+                    newParagraph(' <s> <s> <s> ', 4);
+                }
             }
             }
-
         };
         };
 
 
         const onEndNode = (elemName) => {// eslint-disable-line no-unused-vars
         const onEndNode = (elemName) => {// eslint-disable-line no-unused-vars
             if (tag == elemName) {
             if (tag == elemName) {
-                if (tag == 'emphasis' || tag == 'strong') {
-                    growParagraph(`</${tag}>`, 0);
-                }
+                if (path.indexOf('/fictionbook/body') == 0) {
+                    if (tag == 'title') {
+                        bold = false;
+                        center = false;
+                    }
 
 
-                if (tag == 'title') {
-                    bold = false;
-                    center = false;
-                }
+                    if (tag == 'emphasis' || tag == 'strong') {
+                        growParagraph(`</${tag}>`, 0);
+                    }
 
 
-                if (tag == 'subtitle') {
-                    bold = false;
-                }
+                    if (tag == 'subtitle') {
+                        bold = false;
+                    }
 
 
-                if (tag == 'epigraph') {
-                    italic = false;
-                }
+                    if (tag == 'epigraph') {
+                        italic = false;
+                    }
 
 
-                if (tag == 'stanza') {
-                    newParagraph(' ', 1);
+                    if (tag == 'stanza') {
+                        newParagraph(' ', 1);
+                    }
                 }
                 }
 
 
                 path = path.substr(0, path.length - tag.length - 1);
                 path = path.substr(0, path.length - tag.length - 1);
@@ -211,12 +215,12 @@ export default class BookParser {
             let tOpen = (center ? '<center>' : '');
             let tOpen = (center ? '<center>' : '');
             tOpen += (bold ? '<strong>' : '');
             tOpen += (bold ? '<strong>' : '');
             tOpen += (italic ? '<emphasis>' : '');
             tOpen += (italic ? '<emphasis>' : '');
-            let tClose = (center ? '</center>' : '');
+            let tClose = (italic ? '</emphasis>' : '');
             tClose += (bold ? '</strong>' : '');
             tClose += (bold ? '</strong>' : '');
-            tClose += (italic ? '</emphasis>' : '');
+            tClose += (center ? '</center>' : '');
 
 
             if (path.indexOf('/fictionbook/body/title') == 0) {
             if (path.indexOf('/fictionbook/body/title') == 0) {
-                newParagraph(`${tOpen}${text}${tClose}`, text.length, true);
+                growParagraph(`${tOpen}${text}${tClose}`, text.length, true);
             }
             }
 
 
             if (path.indexOf('/fictionbook/body/section') == 0) {
             if (path.indexOf('/fictionbook/body/section') == 0) {