mirror of
https://github.com/alexadam/save-as-ebook.git
synced 2025-09-06 07:29:38 +00:00
escape XML chars in title
This commit is contained in:
parent
36c9b68e10
commit
d25e851edc
3 changed files with 19 additions and 14 deletions
|
@ -154,7 +154,7 @@ function force($content, withError) {
|
||||||
contentString = contentString.replace(/ /gi, ' ');
|
contentString = contentString.replace(/ /gi, ' ');
|
||||||
|
|
||||||
// getHref() replace does not work (& is overwritten)
|
// getHref() replace does not work (& is overwritten)
|
||||||
contentString = escapeAmp(contentString);
|
contentString = escapeXMLChars(contentString);
|
||||||
|
|
||||||
return contentString;
|
return contentString;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
|
|
@ -38,11 +38,11 @@ function _buildEbook(allPages) {
|
||||||
var ebookFileName = 'eBook.epub';
|
var ebookFileName = 'eBook.epub';
|
||||||
|
|
||||||
if (ebookTitle) {
|
if (ebookTitle) {
|
||||||
// ~TODO a pre-processing function to apply escapeAmp to all page.titles
|
// ~TODO a pre-processing function to apply escapeXMLChars to all page.titles
|
||||||
ebookName = escapeAmp(ebookTitle);
|
ebookName = escapeXMLChars(ebookTitle);
|
||||||
ebookFileName = getEbookFileName(ebookTitle) + '.epub';
|
ebookFileName = getEbookFileName(ebookTitle) + '.epub';
|
||||||
} else {
|
} else {
|
||||||
ebookName = escapeAmp(allPages[0].title);
|
ebookName = escapeXMLChars(allPages[0].title);
|
||||||
ebookFileName = getEbookFileName(allPages[0].title) + '.epub';
|
ebookFileName = getEbookFileName(allPages[0].title) + '.epub';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -73,7 +73,7 @@ function _buildEbook(allPages) {
|
||||||
'<h1 class="frontmatter">Table of Contents</h1>' +
|
'<h1 class="frontmatter">Table of Contents</h1>' +
|
||||||
'<ol class="contents">' +
|
'<ol class="contents">' +
|
||||||
allPages.reduce(function(prev, page) {
|
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>';
|
return prev + '\n' + '<li><a href="pages/' + page.url + '">' + tmpPageTitle + '</a></li>';
|
||||||
}, '') +
|
}, '') +
|
||||||
'</ol>' +
|
'</ol>' +
|
||||||
|
@ -94,7 +94,7 @@ function _buildEbook(allPages) {
|
||||||
'</docTitle>' +
|
'</docTitle>' +
|
||||||
'<navMap>' +
|
'<navMap>' +
|
||||||
allPages.reduce(function(prev, page, index) {
|
allPages.reduce(function(prev, page, index) {
|
||||||
var tmpPageTitle = escapeAmp(page.title);
|
var tmpPageTitle = escapeXMLChars(page.title);
|
||||||
return prev + '\n' +
|
return prev + '\n' +
|
||||||
'<navPoint id="ebook' + index + '" playOrder="' + (index + 1) + '">' +
|
'<navPoint id="ebook' + index + '" playOrder="' + (index + 1) + '">' +
|
||||||
'<navLabel><text>' + tmpPageTitle + '</text></navLabel>' +
|
'<navLabel><text>' + tmpPageTitle + '</text></navLabel>' +
|
||||||
|
@ -113,7 +113,7 @@ function _buildEbook(allPages) {
|
||||||
|
|
||||||
var pagesFolder = oebps.folder('pages');
|
var pagesFolder = oebps.folder('pages');
|
||||||
allPages.forEach(function(page) {
|
allPages.forEach(function(page) {
|
||||||
var tmpPageTitle = escapeAmp(page.title);
|
var tmpPageTitle = escapeXMLChars(page.title);
|
||||||
pagesFolder.file(page.url,
|
pagesFolder.file(page.url,
|
||||||
'<?xml version="1.0" encoding="utf-8"?>' +
|
'<?xml version="1.0" encoding="utf-8"?>' +
|
||||||
'<html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops">' +
|
'<html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops">' +
|
||||||
|
|
|
@ -167,7 +167,7 @@ function getAbsoluteUrl(urlStr) {
|
||||||
} else if (urlStr.indexOf('http') !== 0) {
|
} else if (urlStr.indexOf('http') !== 0) {
|
||||||
absoluteUrl = currentUrl + '/' + urlStr;
|
absoluteUrl = currentUrl + '/' + urlStr;
|
||||||
}
|
}
|
||||||
absoluteUrl = escapeAmp(absoluteUrl);
|
absoluteUrl = escapeXMLChars(absoluteUrl);
|
||||||
return absoluteUrl;
|
return absoluteUrl;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.log('Error:', e);
|
console.log('Error:', e);
|
||||||
|
@ -291,13 +291,18 @@ function generateRandomTag(tagLen) {
|
||||||
return text;
|
return text;
|
||||||
}
|
}
|
||||||
|
|
||||||
function escapeAmp(text) {
|
function escapeXMLChars(text) {
|
||||||
var newText = text.replace(/&/ig, '&');
|
return text.replace(/&/g, '&')
|
||||||
newText = newText.replace(/&/ig, '&');
|
.replace(/>/g, '>')
|
||||||
return newText;
|
.replace(/</g, '<')
|
||||||
|
.replace(/"/g, '"')
|
||||||
|
.replace(/'/g, ''');
|
||||||
}
|
}
|
||||||
|
|
||||||
function getEbookFileName(name) {
|
function getEbookFileName(name) {
|
||||||
var newName = name.replace(/&/ig, '&');
|
return name.replace(/&/ig, '&')
|
||||||
return newName;
|
.replace(/>/ig, '')
|
||||||
|
.replace(/</ig, '')
|
||||||
|
.replace(/"/ig, '')
|
||||||
|
.replace(/'/ig, '');
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue