escape XML chars in title

This commit is contained in:
Alex Adam 2017-10-26 18:06:31 +03:00
parent 36c9b68e10
commit d25e851edc
3 changed files with 19 additions and 14 deletions

View file

@ -154,7 +154,7 @@ function force($content, withError) {
contentString = contentString.replace(/ /gi, ' ');
// getHref() replace does not work (& is overwritten)
contentString = escapeAmp(contentString);
contentString = escapeXMLChars(contentString);
return contentString;
} catch (e) {

View file

@ -38,11 +38,11 @@ function _buildEbook(allPages) {
var ebookFileName = 'eBook.epub';
if (ebookTitle) {
// ~TODO a pre-processing function to apply escapeAmp to all page.titles
ebookName = escapeAmp(ebookTitle);
// ~TODO a pre-processing function to apply escapeXMLChars to all page.titles
ebookName = escapeXMLChars(ebookTitle);
ebookFileName = getEbookFileName(ebookTitle) + '.epub';
} else {
ebookName = escapeAmp(allPages[0].title);
ebookName = escapeXMLChars(allPages[0].title);
ebookFileName = getEbookFileName(allPages[0].title) + '.epub';
}
@ -73,7 +73,7 @@ function _buildEbook(allPages) {
'<h1 class="frontmatter">Table of Contents</h1>' +
'<ol class="contents">' +
allPages.reduce(function(prev, page) {
var tmpPageTitle = escapeAmp(page.title);
var tmpPageTitle = escapeXMLChars(page.title);
return prev + '\n' + '<li><a href="pages/' + page.url + '">' + tmpPageTitle + '</a></li>';
}, '') +
'</ol>' +
@ -94,7 +94,7 @@ function _buildEbook(allPages) {
'</docTitle>' +
'<navMap>' +
allPages.reduce(function(prev, page, index) {
var tmpPageTitle = escapeAmp(page.title);
var tmpPageTitle = escapeXMLChars(page.title);
return prev + '\n' +
'<navPoint id="ebook' + index + '" playOrder="' + (index + 1) + '">' +
'<navLabel><text>' + tmpPageTitle + '</text></navLabel>' +
@ -113,7 +113,7 @@ function _buildEbook(allPages) {
var pagesFolder = oebps.folder('pages');
allPages.forEach(function(page) {
var tmpPageTitle = escapeAmp(page.title);
var tmpPageTitle = escapeXMLChars(page.title);
pagesFolder.file(page.url,
'<?xml version="1.0" encoding="utf-8"?>' +
'<html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops">' +

View file

@ -167,7 +167,7 @@ function getAbsoluteUrl(urlStr) {
} else if (urlStr.indexOf('http') !== 0) {
absoluteUrl = currentUrl + '/' + urlStr;
}
absoluteUrl = escapeAmp(absoluteUrl);
absoluteUrl = escapeXMLChars(absoluteUrl);
return absoluteUrl;
} catch (e) {
console.log('Error:', e);
@ -291,13 +291,18 @@ function generateRandomTag(tagLen) {
return text;
}
function escapeAmp(text) {
var newText = text.replace(/&amp;/ig, '&');
newText = newText.replace(/&/ig, '&amp;');
return newText;
function escapeXMLChars(text) {
return text.replace(/&/g, '&amp;')
.replace(/>/g, '&gt;')
.replace(/</g, '&lt;')
.replace(/"/g, '&quot;')
.replace(/'/g, '&apos;');
}
function getEbookFileName(name) {
var newName = name.replace(/&amp;/ig, '&');
return newName;
return name.replace(/&amp;/ig, '&')
.replace(/&gt;/ig, '')
.replace(/&lt;/ig, '')
.replace(/&quot;/ig, '')
.replace(/&apos;/ig, '');
}