Project

General

Profile

« Previous | Next » 

Revision 48f76d70

Added by koszko about 2 years ago

add support for `ftp://' protocol

View differences:

common/patterns.js
7 7

  
8 8
const proto_regex = /^(\w+):\/\/(.*)$/;
9 9

  
10
const user_re = "[^/?#@]+@"
10 11
const domain_re = "[^/?#]+";
11 12
const path_re = "[^?#]*";
12 13
const query_re = "\\??[^#]*";
......
15 16

  
16 17
const file_regex = new RegExp(`^(${path_re}).*`);
17 18

  
19
const ftp_regex = new RegExp(`^(${user_re})?(${domain_re})(${path_re}).*`);
20

  
18 21
function deconstruct_url(url)
19 22
{
20 23
    const proto_match = proto_regex.exec(url);
......
25 28

  
26 29
    if (deco.proto === "file") {
27 30
	deco.path = file_regex.exec(proto_match[2])[1];
31
    } else if (deco.proto === "ftp") {
32
	[deco.domain, deco.path] = ftp_regex.exec(proto_match[2]).slice(2, 4);
28 33
    } else {
29 34
	const http_match = http_regex.exec(proto_match[2]);
30 35
	if (!http_match)
31 36
	    return undefined;
32 37
	[deco.domain, deco.path, deco.query] = http_match.slice(1, 4);
33
	deco.domain = deco.domain.split(".");
34 38
    }
35 39

  
40
    if (deco.domain)
41
	deco.domain = deco.domain.split(".");
42

  
36 43
    const leading_dash = deco.path[0] === "/";
37 44
    deco.trailing_dash = deco.path[deco.path.length - 1] === "/";
38 45
    deco.path = deco.path.split("/").filter(s => s !== "");
content/main.js
109 109
	    document.cookie = `hachette-${signature}=; Max-Age=-1;`;
110 110
    } else {
111 111
	const scheme = /^([^:]*)/.exec(document.URL)[1];
112
	const known_scheme = ["file"].includes(scheme);
112
	const known_scheme = ["file", "ftp"].includes(scheme);
113 113

  
114 114
	if (!known_scheme)
115 115
	    console.warn(`Unknown url scheme: \`${scheme}'!`);

Also available in: Unified diff