Исправление парсинга примечаний

This commit is contained in:
Book Pauk
2024-07-28 20:13:35 +07:00
parent 418ff482ae
commit 897cdc8ac7
2 changed files with 29 additions and 13 deletions

View File

@@ -1271,8 +1271,14 @@ class TextPage {
if (note) {
if (orig) {//show dialog
this.noteId = noteId;
const pad = (note.para.length > 1 ? 20 : 0);
this.noteHtml = note.para.map(p => `<p style="margin: 0; padding-left: ${pad}px">${p}</p>`).join('');
this.noteHtml = note.xml
.replace(/<p>/g, '<p class="note-para">')
.replace(/<stanza>/g, '<br>').replace(/<\/stanza>/g, '')
.replace(/<v>/g, '<p class="note-para">').replace(/<\/v>/g, '</p>')
.replace(/<emphasis>/g, '<em>').replace(/<\/emphasis>/g, '</em>')
.replace(/<text-author>/g, '<br>').replace(/<\/text-author>/g, '')
;
this.noteDialogVisible = true;
} else {//go to orig
this.goToOrigNote(noteId);
@@ -1335,3 +1341,10 @@ export default vueComponent(TextPage);
}
</style>
<style>
.note-para {
margin: 0;
padding: 0;
text-indent: 20px;
}
</style>

View File

@@ -94,6 +94,7 @@ export default class BookParser {
let inNote = false;
let noteId = '';
let inNotesBody = false;
const noteTags = new Set(['p', 'poem', 'stanza', 'v', 'text-author', 'emphasis']);
//оглавление
this.contents = [];
@@ -429,7 +430,7 @@ export default class BookParser {
}
note.noteParaIndex = paraIndex;
note.para = [];
note.xml = '';
noteId = id;
}
@@ -447,15 +448,11 @@ export default class BookParser {
inPara = true;
isFirstTitlePara = false;
if (inNotesBody && noteId) {
if (!inTitle) {
this.notes[noteId].para.push('');
} else {
if (inTitle && inNotesBody && noteId) {
growParagraph(`<note href="${noteId}">`, 0);
}
}
}
}
if (tag == 'subtitle') {
newParagraph();
@@ -487,6 +484,10 @@ export default class BookParser {
bold = true;
space += 1;
}
if (!inTitle && inNotesBody && noteId && noteTags.has(tag)) {
this.notes[noteId].xml += `<${tag}>`;
}
}
};
@@ -551,6 +552,10 @@ export default class BookParser {
bold = false;
space -= 1;
}
if (!inTitle && inNotesBody && noteId && noteTags.has(tag)) {
this.notes[noteId].xml += `</${tag}>`;
}
}
let i = path.lastIndexOf(tag);
@@ -637,10 +642,8 @@ export default class BookParser {
else
growParagraph(' ', 1);
if (!inTitle && inPara && inNotesBody && noteId) {
const p = this.notes[noteId].para;
if (p.length)
p[p.length - 1] = p[p.length - 1] + text;
if (!inTitle && inNotesBody && noteId) {
this.notes[noteId].xml += text;
}
}
};