Former-commit-id: 640536ffd603fa8209485e0a94221ebf0ab41cd2
@@ -51,6 +51,7 @@ singlefile.extension.core.bg.config = (() => {
confirmFilename: false,
filenameConflictAction: "uniquify",
filenameMaxLength: 192,
+ filenameReplacedCharacters: ["~", "\\\\", "?", "%", "*", ":", "|", "\"", "<", ">", "\x00-\x1f", "\x7F"],
filenameReplacementCharacter: "_",
contextMenuEnabled: true,
tabMenuEnabled: true,
@@ -469,7 +469,7 @@ this.singlefile.lib.core = this.singlefile.lib.core || (() => {
}
let filename = await ProcessorHelper.evalTemplate(this.options.filenameTemplate, this.options, content) || "";
const replacementCharacter = this.options.filenameReplacementCharacter;
- filename = util.getValidFilename(filename, replacementCharacter);
+ filename = util.getValidFilename(filename, this.options.filenameReplacedCharacters, replacementCharacter);
if (!this.options.backgroundSave) {
filename = filename.replace(/\//g, replacementCharacter);
@@ -82,9 +82,8 @@ this.singlefile.lib.util = this.singlefile.lib.util || (() => {
resolveURL(resourceURL, baseURI) {
return this.parseURL(resourceURL, baseURI).href;
},
- getValidFilename(filename, replacementCharacter) {
- filename = filename
- .replace(/[~\\?%*:|"<>\x00-\x1f\x7F]+/g, replacementCharacter); // eslint-disable-line no-control-regex
+ getValidFilename(filename, replacedCharacters, replacementCharacter) {
+ replacedCharacters.forEach(replacedCharacter => filename = filename.replace(new RegExp("[" + replacedCharacter + "]+", "g"), replacementCharacter));
filename = filename
.replace(/\.\.\//g, "")
.replace(/^\/+/, "")