1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
var args = require("args");
var parser = exports.parser = new args.Parser();
parser.arg('script').optional();
parser.help(
'Runs the Narwhal JavaScript interpreter.\n' +
'If no script is specified, runs interactively.'
);
// override the parser's Option type and add the "todo"
// action chain
parser.Option = function () {
args.Option.apply(this, arguments);
};
parser.Option.prototype = new args.Option();
parser.Option.prototype.todo = function (command) {
return this.action(function (options, name, value) {
options.todo.push([command, value]);
});
};
parser.def('todo', []);
parser.option('-e', '-c', '--command', 'command')
.help("evaluate command")
.todo("eval")
.halt();
parser.option('-r', '--require', 'module')
.help("pre-load a module")
.todo("require");
parser.option('-m', '--module', 'main')
.help("run a library module as a script")
.set()
.halt();
parser.option('-I', '--include', 'lib')
.help("add a library path to loader in the position of highest precedence")
.todo("include");
parser.option('-p', '--package', 'packagePrefixes')
.help("add a package prefix directory")
.push();
parser.option('-i', '--interactive', 'interactive')
.help('enter interactive mode after running scripts')
.set(true)
.hidden();
parser.option('-E', '--no-use-env', 'useEnv')
.help('ignore environment variables like JS_PATH, NARWHAL_PATH')
.def(true)
.set(false)
.hidden();
parser.option('-d', '--debug', 'debug')
.help('set debug mode, system.debug = true')
.inc();
parser.option('-P', '--no-packages', 'noPackages')
.help("don't load packages automatically")
.set(true);
parser.option('-v', '--verbose', 'verbose')
.help("verbose mode: trace 'require' calls.")
.set(true);
parser.option('-x', '--shebang', 'shebang')
.help('skip every line before the Unix #!shebang for non-Unix shebangs')
.set(true)
.hidden();
parser.option('-u', '--unbuffered')
.help('unbuffered stdin and stdout')
.set(true)
.hidden();
parser.option('-l', '--log', 'level')
.help('set the log level')
.choices({'critical': 0, 'error': 1, 'warn': 2, 'info': 3, 'debug': 4});
parser.option('-:', '--path', 'delimiter')
.help("prints an augmented PATH with all package bins/")
.todo("path");
parser.option('-V', '--version')
.help("print Narwhal version number and exit.")
.action(function () {
this.print("Narwhal Version 0.");
this.exit();
});
parser.option('-O', 'optimize').inc().hidden();
parser.option('--bogus');
parser.option('--narwhal')
.def('left')
.choices(['left', 'right'])
.action(function (options, name, value) {
this.print(exports[value.toUpperCase()]);
})
.halt()
.hidden();
parser.helpful();
// and now for something completely different
exports.LEFT = " ,\n ,f\n ,t,\n ,:L.\n tL,\n :EDDEKL :Lt\n DDDDLGKKKK ,,tD\n ,GDDfi.itLKKEKL tEi\n DDEEf,,tfLLDEEDL,D\n .GEDEf,itLLfDLDLDDfD\n DDEDLf,,fLLGLLDLDti:DL\n DGDDGL,tttLDLDLfttttiLD\n GDDLLt,fLLLDLLtLi,ttfLG\n GGDGt,tLLLDfftii,i,ttLf\n DGLLtttftftttf,,tttitLt\n DEtftttLffttttii ttfLfj\n .DLtittftLftt,,i,,itLfLj\n DGL;t,tftiti,,,,,,tLLLt\n DGGttttttii,,,,,:,tttDG\n ,DLtjtiitii,,:,:,,t ,tG:\n DDjttttt,ii,,,,:::t:ttL\n ;GLjtttti,i,,, ,,LG,,ft\n DDLttftttti;,,ifDLDtiit\n EGLjtjftt,,,ifLt DLt,:\n DGfffijittfftt .DLLt\n:DGfjffftfLft EEDf\n:EGfftjjLLj EED\n:DGfLfjLGG ;E,\n GGfffLLL\n DGffLDf\n DGLfGL.\n fGLfGL\n DGLDL\n EGGGG\n DLGG\n EGLL\n ELG\n EEDKDGEE\n jKEKKKK\n EEKKKK\n DEE\n .EEKG\n Lf";
exports.RIGHT = ",\nf,\n ,t,\n .L:,\n ,Lt\n tL: LKEDDE:\n Dt,, KKKKGLDDDD\n iEt LKEKKLti.ifDDG,\n D,LDEEDLLft,,fEEDD\n DfDDLDLDfLLti,fEDEG.\n LD:itDLDLLGLLf,,fLDEDD\n DLittttfLDLDLttt,LGDDGD\n GLftt,iLtLLDLLLf,tLLDDG\n fLtt,i,iitffDLLLt,tGDGG\n tLtittt,,ftttftftttLLGD\n jfLftt iittttffLtttftED\n jLfLti,,i,,ttfLtfttitLD.\n tLLLt,,,,,,ititft,t;LGD\n GDttt,:,,,,,iittttttGGD\n :Gt, t,,:,:,,iitiitjtLD,\n Ltt:t:::,,,,ii,tttttjDD\n tf,,GL,, ,,,i,ittttjLG;\n tiitDLDfi,,;ittttfttLDD\n :,tLD tLfi,,,ttfjtjLGE\n tLLD. ttffttijifffGD\n fDEE tfLftfffjfGD:\n DEE jLLjjtffGE:\n ,E; GGLjfLfGD:\n LLLfffGG\n fDLffGD\n .LGfLGD\n LGfLGf\n LDLGD\n GGGGE\n GGLD\n LLGE\n GLE\n EEGDKDEE\n KKKKEKj\n KKKKEE\n EED\n GKEE.\n fL\n";
|