Переглянути джерело

added 'filenameReplacedCharacters' option

Former-commit-id: 640536ffd603fa8209485e0a94221ebf0ab41cd2
Gildas 6 роки тому
батько
коміт
7644b54f70

+ 1 - 0
extension/core/bg/config.js

@@ -51,6 +51,7 @@ singlefile.extension.core.bg.config = (() => {
 		confirmFilename: false,
 		filenameConflictAction: "uniquify",
 		filenameMaxLength: 192,
+		filenameReplacedCharacters: ["~", "\\\\", "?", "%", "*", ":", "|", "\"", "<", ">", "\x00-\x1f", "\x7F"],
 		filenameReplacementCharacter: "_",
 		contextMenuEnabled: true,
 		tabMenuEnabled: true,

+ 1 - 1
lib/single-file/single-file-core.js

@@ -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);
 			}

+ 2 - 3
lib/single-file/single-file-util.js

@@ -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(/^\/+/, "")