Compare commits

...

2 Commits
0.3 ... master

  1. 36
      background.js
  2. 2
      manifest.json

@ -14,11 +14,28 @@ function sanitizeUrl(unsafe) {
.replace(/;/g, "%3B");
}
/** Remove the most risky characters from a filename string */
/**
* Remove the most risky characters from a filename string
*
* Firefox doesn't allow these: |"*?:<>
*/
function cleanFilename(unsafe) {
return unsafe
.replace(/[/\\?*|"'<>:]+/g, " ")
.replace(/\s+/g, " ");
.replace(/::/g, " - ") // common delimiter (e.g. My Cool Article :: Website.com)
.replace(/[?*]+/g, " ") // this is just noise, drop it
.replace(/[\<\[]/g, "(")
.replace(/[\>\]]/g, ")")
.replace(/ :/g, " -")
.replace(/: /g, " ")
.replace(/:/g, "_")
.replace(/"/g, "'") // firefox hates double quote
.replace(/[/\\|]/g, "-") // porobable delimiters that should be kept in some form
.replace(/-+/g, "-") // collapse multiple hyphen (may result from substitutions)
.replace(/[\+=]/g, "_") // other suspicious stuff
.replace(/\s+/g, " ") // collapse multiple whitespace
.replace(/[\._,-]+$/g, "") // the filename should not end on special chars
.replace(/^[\._,-]+/g, "") // nor start
.trim();
}
browser.browserAction.onClicked.addListener((tab) => {
@ -26,8 +43,11 @@ browser.browserAction.onClicked.addListener((tab) => {
const escapedTitle = escapeHtml(tab.title);
const filename = cleanFilename(tab.title);
const content = new Blob([
`<!DOCTYPE html>
console.log(`Escaped URL: "${escapedUrl}"`);
console.log(`Escaped title: "${escapedTitle}"`);
console.log(`Saving as: "${filename}"`);
const html = `<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
@ -49,7 +69,11 @@ browser.browserAction.onClicked.addListener((tab) => {
Redirecting to: <a href="${escapedUrl}">${escapedUrl}</a>
</body>
</html>
`]);
`;
const content = new Blob([html]);
//console.log(`Generated HTML:\n${html}`);
browser.downloads.download({
filename: `${filename}.link.html`,

@ -2,7 +2,7 @@
"manifest_version":2,
"author": "Ondřej Hruška",
"name":"Save Link to File",
"version":"0.3",
"version":"0.5",
"description":"Saves the current page as a HTML file with auto-redirect. It's like a bookmark you can store anywhere on your disk.",
"icons":{
"48":"icon-dark.svg",

Loading…
Cancel
Save