diff options
Diffstat (limited to 'node_modules/locutus/php/net-gopher/gopher_parsedir.js')
-rw-r--r-- | node_modules/locutus/php/net-gopher/gopher_parsedir.js | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/node_modules/locutus/php/net-gopher/gopher_parsedir.js b/node_modules/locutus/php/net-gopher/gopher_parsedir.js new file mode 100644 index 0000000..d681c9c --- /dev/null +++ b/node_modules/locutus/php/net-gopher/gopher_parsedir.js @@ -0,0 +1,84 @@ +'use strict'; + +module.exports = function gopher_parsedir(dirent) { + // eslint-disable-line camelcase + // discuss at: http://locutus.io/php/gopher_parsedir/ + // original by: Brett Zamir (http://brett-zamir.me) + // example 1: var entry = gopher_parsedir('0All about my gopher site.\t/allabout.txt\tgopher.example.com\t70\u000d\u000a') + // example 1: entry.title + // returns 1: 'All about my gopher site.' + + /* Types + * 0 = plain text file + * 1 = directory menu listing + * 2 = CSO search query + * 3 = error message + * 4 = BinHex encoded text file + * 5 = binary archive file + * 6 = UUEncoded text file + * 7 = search engine query + * 8 = telnet session pointer + * 9 = binary file + * g = Graphics file format, primarily a GIF file + * h = HTML file + * i = informational message + * s = Audio file format, primarily a WAV file + */ + + var entryPattern = /^(.)(.*?)\t(.*?)\t(.*?)\t(.*?)\u000d\u000a$/; + var entry = dirent.match(entryPattern); + + if (entry === null) { + throw new Error('Could not parse the directory entry'); + // return false; + } + + var type = entry[1]; + switch (type) { + case 'i': + // GOPHER_INFO + type = 255; + break; + case '1': + // GOPHER_DIRECTORY + type = 1; + break; + case '0': + // GOPHER_DOCUMENT + type = 0; + break; + case '4': + // GOPHER_BINHEX + type = 4; + break; + case '5': + // GOPHER_DOSBINARY + type = 5; + break; + case '6': + // GOPHER_UUENCODED + type = 6; + break; + case '9': + // GOPHER_BINARY + type = 9; + break; + case 'h': + // GOPHER_HTTP + type = 254; + break; + default: + return { + type: -1, + data: dirent + }; // GOPHER_UNKNOWN + } + return { + type: type, + title: entry[2], + path: entry[3], + host: entry[4], + port: entry[5] + }; +}; +//# sourceMappingURL=gopher_parsedir.js.map
\ No newline at end of file |