summaryrefslogtreecommitdiff
path: root/node_modules/locutus/php/net-gopher/gopher_parsedir.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/locutus/php/net-gopher/gopher_parsedir.js')
-rw-r--r--node_modules/locutus/php/net-gopher/gopher_parsedir.js84
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