sibilant 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/js/sibilant/include/macros.sibilant +6 -1
- data/js/sibilant/lib/browser.js +61 -105
- data/js/sibilant/lib/cli.js +1 -11
- data/js/sibilant/lib/options.js +2 -25
- data/js/sibilant/lib/repl.js +0 -2
- data/js/sibilant/lib/sibilant.js +57 -104
- data/js/sibilant/misc/sibilant-mode.el +1 -1
- data/js/sibilant/package.json +6 -3
- data/js/sibilant/package.sibilant +4 -3
- data/js/sibilant/public/javascripts/browser.js +61 -105
- data/js/sibilant/public/javascripts/macros.sibilant +6 -1
- data/js/sibilant/src/core.sibilant +25 -24
- data/js/sibilant/test/test.sibilant +24 -5
- data/lib/sibilant/version.rb +1 -1
- data/lib/sibilant.rb +6 -0
- data/spec/sibilant_spec.rb +4 -0
- metadata +2 -2
@@ -228,7 +228,7 @@
|
|
228
228
|
(concat "(!!(" (translate expr) "))"))
|
229
229
|
|
230
230
|
(defmacro chain (object &rest calls)
|
231
|
-
(concat (translate object)
|
231
|
+
(concat (translate object)
|
232
232
|
(indent (join "\n"
|
233
233
|
(map calls
|
234
234
|
(lambda (call, index)
|
@@ -237,6 +237,11 @@
|
|
237
237
|
(concat "." (translate method)
|
238
238
|
"(" (join ", " (map args translate)) ")")))))))
|
239
239
|
|
240
|
+
(defmacro chainable (&rest names)
|
241
|
+
(each (name) names
|
242
|
+
(macros.defmacro name ['target "&rest" 'calls]
|
243
|
+
['apply 'macros.chain ['cons ['macros.call ['quote name] 'target] 'calls]])))
|
244
|
+
|
240
245
|
(defmacro try (tryblock catchblock)
|
241
246
|
(concat
|
242
247
|
"(function() {"
|
data/js/sibilant/lib/browser.js
CHANGED
@@ -1,12 +1,10 @@
|
|
1
1
|
(function() {
|
2
2
|
var sibilant = { };
|
3
3
|
var error = (function(str) {
|
4
|
-
// str:required
|
5
4
|
throw new Error (str);
|
6
5
|
});
|
7
6
|
;
|
8
7
|
var inspect = (function(item) {
|
9
|
-
// item:required
|
10
8
|
return (function() {
|
11
9
|
if (item.toSource) {
|
12
10
|
return item.toSource();
|
@@ -19,7 +17,6 @@
|
|
19
17
|
(window)["sibilant"] = sibilant;
|
20
18
|
var exports = { };
|
21
19
|
var bulkMap = (function(arr, fn) {
|
22
|
-
// arr:required fn:required
|
23
20
|
var index = 0,
|
24
21
|
groupSize = fn.length,
|
25
22
|
retArr = [ ];
|
@@ -37,12 +34,10 @@
|
|
37
34
|
});
|
38
35
|
|
39
36
|
var inject = (function(start, items, fn) {
|
40
|
-
// start:required items:required fn:required
|
41
37
|
var value = start;
|
42
38
|
(function() {
|
43
39
|
if ((items) && (items).constructor.name === "Array") {
|
44
40
|
return items.forEach((function(item, index) {
|
45
|
-
// item:required index:required
|
46
41
|
return value = fn(value, item, index);
|
47
42
|
}));
|
48
43
|
}
|
@@ -51,18 +46,14 @@
|
|
51
46
|
});
|
52
47
|
|
53
48
|
var map = (function(items, fn) {
|
54
|
-
// items:required fn:required
|
55
49
|
return inject([ ], items, (function(collector, item, index) {
|
56
|
-
// collector:required item:required index:required
|
57
50
|
collector.push(fn(item, index));
|
58
51
|
return collector;
|
59
52
|
}));
|
60
53
|
});
|
61
54
|
|
62
55
|
var select = (function(items, fn) {
|
63
|
-
// items:required fn:required
|
64
56
|
return inject([ ], items, (function(collector, item, index) {
|
65
|
-
// collector:required item:required index:required
|
66
57
|
(function() {
|
67
58
|
if (fn(item, index)) {
|
68
59
|
return collector.push(item);
|
@@ -73,7 +64,6 @@
|
|
73
64
|
});
|
74
65
|
|
75
66
|
var detect = (function(items, fn) {
|
76
|
-
// items:required fn:required
|
77
67
|
var returnItem = undefined,
|
78
68
|
index = 0,
|
79
69
|
items = items;
|
@@ -94,7 +84,6 @@
|
|
94
84
|
});
|
95
85
|
|
96
86
|
var reject = (function(items, fn) {
|
97
|
-
// items:required fn:required
|
98
87
|
var args = [ items, fn ];
|
99
88
|
return select(items, (function() {
|
100
89
|
return (!fn.apply(undefined, arguments));
|
@@ -102,19 +91,15 @@
|
|
102
91
|
});
|
103
92
|
|
104
93
|
var compact = (function(arr) {
|
105
|
-
// arr:required
|
106
94
|
return select(arr, (function(item) {
|
107
|
-
// item:required
|
108
95
|
return (!!(item));
|
109
96
|
}));
|
110
97
|
});
|
111
98
|
|
112
99
|
var flatten = (function(items) {
|
113
|
-
// items:rest
|
114
100
|
var items = Array.prototype.slice.call(arguments, 0);
|
115
101
|
|
116
102
|
return inject([ ], items, (function(collector, item) {
|
117
|
-
// collector:required item:required
|
118
103
|
return collector.concat((function() {
|
119
104
|
if ((item) && (item).constructor.name === "Array") {
|
120
105
|
return flatten.apply(undefined, item);
|
@@ -141,12 +126,10 @@
|
|
141
126
|
(sibilant.tokens)["specialLiteral"] = (sibilant.tokens.special + sibilant.tokens.literal);
|
142
127
|
(sibilant)["tokenPrecedence"] = [ "regex", "comment", "string", "number", "specialLiteral", "otherChar", "specialOpenParen", "closeParen", "alternativeParens" ];
|
143
128
|
var tokenize = sibilant.tokenize = (function(string) {
|
144
|
-
// string:required
|
145
129
|
var tokens = [ ],
|
146
130
|
parseStack = [ tokens ],
|
147
131
|
specials = [ ];
|
148
132
|
var acceptToken = (function(token) {
|
149
|
-
// token:required
|
150
133
|
return (parseStack)[0].push(token);
|
151
134
|
});
|
152
135
|
;
|
@@ -167,7 +150,6 @@
|
|
167
150
|
});
|
168
151
|
;
|
169
152
|
var handleToken = (function(token) {
|
170
|
-
// token:required
|
171
153
|
var special = (token)[0],
|
172
154
|
token = token;
|
173
155
|
(function() {
|
@@ -216,11 +198,10 @@
|
|
216
198
|
});
|
217
199
|
;
|
218
200
|
var orderedRegexen = map(sibilant.tokenPrecedence, (function(x) {
|
219
|
-
// x:required
|
220
201
|
return (sibilant.tokens)[x];
|
221
202
|
})),
|
222
203
|
masterRegex = (new RegExp((orderedRegexen).join("|"), "g"));
|
223
|
-
string
|
204
|
+
string
|
224
205
|
.match(masterRegex)
|
225
206
|
.forEach(handleToken)
|
226
207
|
;
|
@@ -232,10 +213,9 @@
|
|
232
213
|
return tokens;
|
233
214
|
});
|
234
215
|
var indent = (function(args) {
|
235
|
-
// args:rest
|
236
216
|
var args = Array.prototype.slice.call(arguments, 0);
|
237
217
|
|
238
|
-
return (compact(args)
|
218
|
+
return (compact(args)
|
239
219
|
.join("\n")
|
240
220
|
.replace(/^/, "\n")
|
241
221
|
.replace(/\n/g, "\n ")
|
@@ -243,9 +223,7 @@
|
|
243
223
|
});
|
244
224
|
|
245
225
|
var constructHash = (function(arrayOfArrays) {
|
246
|
-
// arrayOfArrays:required
|
247
226
|
return inject({ }, arrayOfArrays, (function(object, item) {
|
248
|
-
// object:required item:required
|
249
227
|
(object)[(item)[0]] = (object)[(item)[1]];
|
250
228
|
return object;
|
251
229
|
}));
|
@@ -254,7 +232,6 @@
|
|
254
232
|
var macros = { };
|
255
233
|
(sibilant)["macros"] = macros;
|
256
234
|
(macros)["return"] = (function(token) {
|
257
|
-
// token:required
|
258
235
|
var defaultReturn = ("return " + translate(token));
|
259
236
|
return (function() {
|
260
237
|
if ((token) && (token).constructor.name === "Array") {
|
@@ -308,41 +285,39 @@
|
|
308
285
|
})();
|
309
286
|
});
|
310
287
|
var asStatement = (function(string) {
|
311
|
-
|
312
|
-
return string // chain
|
288
|
+
return string
|
313
289
|
.toString()
|
314
290
|
.replace(/;*\s*$/, ";")
|
315
291
|
;
|
316
292
|
});
|
317
293
|
|
318
294
|
macros.statement = (function(args) {
|
319
|
-
// args:rest
|
320
295
|
var args = Array.prototype.slice.call(arguments, 0);
|
321
296
|
|
322
297
|
return (macros.call.apply(undefined, args) + ";\n");
|
323
298
|
});
|
324
299
|
|
325
300
|
macros.progn = (function(body) {
|
326
|
-
// body:rest
|
327
301
|
var body = Array.prototype.slice.call(arguments, 0);
|
328
302
|
|
329
303
|
var lastIndex = Math.max(0, (body.length - 1));
|
330
304
|
(body)[lastIndex] = [ "return", (body)[lastIndex] ];
|
331
305
|
return (map(body, (function(arg) {
|
332
|
-
// arg:required
|
333
306
|
return (asStatement(translate(arg)));
|
334
307
|
}))).join("\n");
|
335
308
|
});
|
336
309
|
|
310
|
+
macros.emptyList = (function() {
|
311
|
+
return "null";
|
312
|
+
});
|
313
|
+
|
337
314
|
macros.call = (function(fnName, args) {
|
338
|
-
// fnName:required args:rest
|
339
315
|
var args = Array.prototype.slice.call(arguments, 1);
|
340
316
|
|
341
317
|
return (translate(fnName) + "(" + (map(args, translate)).join(", ") + ")");
|
342
318
|
});
|
343
319
|
|
344
320
|
macros.defun = (function(fnName, argsAndBody) {
|
345
|
-
// fnName:required argsAndBody:rest
|
346
321
|
var argsAndBody = Array.prototype.slice.call(arguments, 1);
|
347
322
|
|
348
323
|
var fnNameTr = translate(fnName),
|
@@ -357,7 +332,6 @@
|
|
357
332
|
});
|
358
333
|
|
359
334
|
macros.defmacro = (function(name, argsAndBody) {
|
360
|
-
// name:required argsAndBody:rest
|
361
335
|
var argsAndBody = Array.prototype.slice.call(arguments, 1);
|
362
336
|
|
363
337
|
var js = macros.lambda.apply(undefined, argsAndBody),
|
@@ -373,18 +347,15 @@
|
|
373
347
|
});
|
374
348
|
|
375
349
|
macros.concat = (function(args) {
|
376
|
-
// args:rest
|
377
350
|
var args = Array.prototype.slice.call(arguments, 0);
|
378
351
|
|
379
352
|
return ("(" + (map(args, translate)).join(" + ") + ")");
|
380
353
|
});
|
381
354
|
|
382
355
|
var transformArgs = (function(arglist) {
|
383
|
-
// arglist:required
|
384
356
|
var last = undefined,
|
385
357
|
args = [ ];
|
386
358
|
arglist.forEach((function(arg) {
|
387
|
-
// arg:required
|
388
359
|
return (function() {
|
389
360
|
if (((arg)[0] === "&")) {
|
390
361
|
return last = arg.slice(1);
|
@@ -403,10 +374,8 @@
|
|
403
374
|
});
|
404
375
|
|
405
376
|
macros.reverse = (function(arr) {
|
406
|
-
// arr:required
|
407
377
|
var reversed = [ ];
|
408
378
|
arr.forEach((function(item) {
|
409
|
-
// item:required
|
410
379
|
return reversed.unshift(item);
|
411
380
|
}));
|
412
381
|
return reversed;
|
@@ -414,17 +383,14 @@
|
|
414
383
|
|
415
384
|
var reverse = macros.reverse;
|
416
385
|
var buildArgsString = (function(args, rest) {
|
417
|
-
// args:required rest:required
|
418
386
|
var argsString = "",
|
419
387
|
optionalCount = 0;
|
420
388
|
args.forEach((function(arg, optionIndex) {
|
421
|
-
// arg:required optionIndex:required
|
422
389
|
return (function() {
|
423
390
|
if (((arg)[0] === "optional")) {
|
424
|
-
argsString = (argsString + "if (arguments.length < " + (args.length - optionalCount) + ")" +
|
425
|
-
// arg:required argIndex:required
|
391
|
+
argsString = (argsString + "if (arguments.length < " + (args.length - optionalCount) + ")" + indent(("var " + map(args.slice((optionIndex + 1)), (function(arg, argIndex) {
|
426
392
|
return (translate((arg)[1]) + " = " + translate(((args)[(optionIndex + argIndex)])[1]));
|
427
|
-
}))
|
393
|
+
}))
|
428
394
|
.reverse()
|
429
395
|
.concat((translate((arg)[1]) + " = undefined"))
|
430
396
|
.join(", ")
|
@@ -442,28 +408,11 @@
|
|
442
408
|
})();
|
443
409
|
});
|
444
410
|
|
445
|
-
var buildCommentString = (function(args) {
|
446
|
-
// args:required
|
447
|
-
return (function() {
|
448
|
-
if (((args).length === 0)) {
|
449
|
-
return "";
|
450
|
-
} else {
|
451
|
-
return ("// " + (map(args, (function(arg) {
|
452
|
-
// arg:required
|
453
|
-
return (translate((arg)[1]) + ":" + (arg)[0]);
|
454
|
-
}))).join(" "));
|
455
|
-
}
|
456
|
-
})();
|
457
|
-
});
|
458
|
-
|
459
|
-
// brain 'splode
|
460
411
|
macros.lambda = (function(arglist, body) {
|
461
|
-
// arglist:required body:rest
|
462
412
|
var body = Array.prototype.slice.call(arguments, 1);
|
463
413
|
|
464
414
|
var args = transformArgs(arglist),
|
465
415
|
rest = (select(args, (function(arg) {
|
466
|
-
// arg:required
|
467
416
|
return ("rest" === (arg)[0]);
|
468
417
|
})))[0],
|
469
418
|
docString = undefined;
|
@@ -480,13 +429,10 @@
|
|
480
429
|
return args;
|
481
430
|
}
|
482
431
|
})(),
|
483
|
-
argsString = buildArgsString(noRestArgs, rest)
|
484
|
-
commentString = buildCommentString(args);
|
432
|
+
argsString = buildArgsString(noRestArgs, rest);
|
485
433
|
return ("(function(" + (map(args, (function(arg) {
|
486
|
-
// arg:required
|
487
434
|
return translate((arg)[1]);
|
488
|
-
}))).join(", ") + ") {" + indent(
|
489
|
-
// stmt:required
|
435
|
+
}))).join(", ") + ") {" + indent(docString, argsString, (map(body, (function(stmt) {
|
490
436
|
var tstmt = translate(stmt);
|
491
437
|
return (tstmt + (function() {
|
492
438
|
if (((tstmt.slice(-1))[0] === ";")) {
|
@@ -499,7 +445,6 @@
|
|
499
445
|
});
|
500
446
|
|
501
447
|
macros.quote = (function(item) {
|
502
|
-
// item:required
|
503
448
|
return (function() {
|
504
449
|
if (("Array" === item.constructor.name)) {
|
505
450
|
return ("[ " + (map(item, macros.quote)).join(", ") + " ]");
|
@@ -516,7 +461,6 @@
|
|
516
461
|
});
|
517
462
|
|
518
463
|
macros.hash = (function(pairs) {
|
519
|
-
// pairs:rest
|
520
464
|
var pairs = Array.prototype.slice.call(arguments, 0);
|
521
465
|
|
522
466
|
(function() {
|
@@ -525,7 +469,6 @@
|
|
525
469
|
}
|
526
470
|
})();
|
527
471
|
var pairStrings = bulkMap(pairs, (function(key, value) {
|
528
|
-
// key:required value:required
|
529
472
|
return (translate(key) + ": " + translate(value));
|
530
473
|
}));
|
531
474
|
return (function() {
|
@@ -538,19 +481,57 @@
|
|
538
481
|
});
|
539
482
|
|
540
483
|
var literal = (function(string) {
|
541
|
-
|
542
|
-
return inject(string // chain
|
484
|
+
return inject(string
|
543
485
|
.replace(/\*/g, "_")
|
544
486
|
.replace(/\?$/, "__QUERY")
|
545
487
|
.replace(/!$/, "__BANG")
|
546
488
|
, string.match(/-(.)/g), (function(returnString, match) {
|
547
|
-
// returnString:required match:required
|
548
489
|
return returnString.replace(match, (match)[1].toUpperCase());
|
549
490
|
}));
|
550
491
|
});
|
551
492
|
|
493
|
+
var translateListToken = (function(token, hint) {
|
494
|
+
return (function() {
|
495
|
+
if (((token).length === 0)) {
|
496
|
+
return macros.emptyList();
|
497
|
+
} else {
|
498
|
+
return (function() {
|
499
|
+
if (typeof((macros)[translate((token)[0])]) !== 'undefined') {
|
500
|
+
return (macros)[translate((token)[0])].apply(undefined, token.slice(1));
|
501
|
+
} else {
|
502
|
+
return (macros)[(hint || "call")].apply(undefined, token);
|
503
|
+
}
|
504
|
+
})();
|
505
|
+
}
|
506
|
+
})();
|
507
|
+
});
|
508
|
+
|
509
|
+
var translateStringToken = (function(token, hint) {
|
510
|
+
return (function() {
|
511
|
+
if (token.match((new RegExp(("^" + sibilant.tokens.literal + "$"), undefined)))) {
|
512
|
+
return literal(token);
|
513
|
+
} else {
|
514
|
+
return (function() {
|
515
|
+
if (token.match((new RegExp("^;", undefined)))) {
|
516
|
+
return token.replace((new RegExp("^;+", undefined)), "//");
|
517
|
+
} else {
|
518
|
+
return (function() {
|
519
|
+
if (("\"" === (token)[0] &&
|
520
|
+
"\"" === (token.slice(-1))[0])) {
|
521
|
+
return token
|
522
|
+
.split("\n")
|
523
|
+
.join("\\n\" +\n\"");
|
524
|
+
} else {
|
525
|
+
return token;
|
526
|
+
}
|
527
|
+
})();
|
528
|
+
}
|
529
|
+
})();
|
530
|
+
}
|
531
|
+
})();
|
532
|
+
});
|
533
|
+
|
552
534
|
var translate = (function(token, hint) {
|
553
|
-
// token:required hint:required
|
554
535
|
var hint = hint;
|
555
536
|
(function() {
|
556
537
|
if ((hint && typeof((macros)[hint]) === 'undefined')) {
|
@@ -568,34 +549,13 @@
|
|
568
549
|
try {
|
569
550
|
return (function() {
|
570
551
|
if ((token) && (token).constructor.name === "Array") {
|
571
|
-
return (
|
572
|
-
if (typeof((macros)[translate((token)[0])]) !== 'undefined') {
|
573
|
-
return (macros)[translate((token)[0])].apply(undefined, token.slice(1));
|
574
|
-
} else {
|
575
|
-
return (macros)[(hint || "call")].apply(undefined, token);
|
576
|
-
}
|
577
|
-
})();
|
552
|
+
return translateListToken(token, hint);
|
578
553
|
} else {
|
579
554
|
return (function() {
|
580
|
-
if (
|
581
|
-
return
|
555
|
+
if (typeof(token) === "string") {
|
556
|
+
return translateStringToken(token, hint);
|
582
557
|
} else {
|
583
|
-
return
|
584
|
-
if ((typeof(token) === "string" && token.match((new RegExp("^;", undefined))))) {
|
585
|
-
return token.replace((new RegExp("^;+", undefined)), "//");
|
586
|
-
} else {
|
587
|
-
return (function() {
|
588
|
-
if ((typeof(token) === "string" && ("\"" === (token)[0] &&
|
589
|
-
"\"" === (token.slice(-1))[0]))) {
|
590
|
-
return token // chain
|
591
|
-
.split("\n")
|
592
|
-
.join("\\n\" +\n\"");
|
593
|
-
} else {
|
594
|
-
return token;
|
595
|
-
}
|
596
|
-
})();
|
597
|
-
}
|
598
|
-
})();
|
558
|
+
return token;
|
599
559
|
}
|
600
560
|
})();
|
601
561
|
}
|
@@ -610,10 +570,8 @@
|
|
610
570
|
|
611
571
|
(sibilant)["translate"] = translate;
|
612
572
|
var translateAll = (function(contents) {
|
613
|
-
// contents:required
|
614
573
|
var buffer = "";
|
615
574
|
tokenize(contents).forEach((function(token) {
|
616
|
-
// token:required
|
617
575
|
var line = translate(token, "statement");
|
618
576
|
return (function() {
|
619
577
|
if (line) {
|
@@ -630,7 +588,6 @@
|
|
630
588
|
var sibilant = window.sibilant,
|
631
589
|
scripts = [ ];
|
632
590
|
var evalWithTryCatch = (function(js) {
|
633
|
-
// js:required
|
634
591
|
return (function() {
|
635
592
|
try {
|
636
593
|
return eval(js);
|
@@ -646,13 +603,13 @@
|
|
646
603
|
js = null;
|
647
604
|
return (function() {
|
648
605
|
if ((!sibilant.loadNextScript())) {
|
649
|
-
return $("script[type=\"text/sibilant\"]:not([src])")
|
606
|
+
return $("script[type=\"text/sibilant\"]:not([src])")
|
650
607
|
.each((function() {
|
651
|
-
lisp = $(this)
|
608
|
+
lisp = $(this)
|
652
609
|
.text()
|
653
610
|
.replace(/(^\s*\/\/\<!\[CDATA\[)|(\/\/\]\]>\s*$)/g, "");
|
654
611
|
js = sibilant.translateAll(lisp);
|
655
|
-
$(this)
|
612
|
+
$(this)
|
656
613
|
.data("js", js)
|
657
614
|
;
|
658
615
|
return evalWithTryCatch(js);
|
@@ -661,7 +618,7 @@
|
|
661
618
|
})();
|
662
619
|
});
|
663
620
|
;
|
664
|
-
scripts = $.makeArray($("script[type=\"text/sibilant\"][src]")
|
621
|
+
scripts = $.makeArray($("script[type=\"text/sibilant\"][src]")
|
665
622
|
.map((function() {
|
666
623
|
return this.src;
|
667
624
|
}))
|
@@ -671,7 +628,6 @@
|
|
671
628
|
return (function() {
|
672
629
|
if (typeof(nextScript) !== 'undefined') {
|
673
630
|
$.get(nextScript, (function(data) {
|
674
|
-
// data:required
|
675
631
|
evalWithTryCatch(sibilant.translateAll(data));
|
676
632
|
return sibilant.scriptLoaded();
|
677
633
|
}));
|
data/js/sibilant/lib/cli.js
CHANGED
@@ -17,8 +17,7 @@ var createContext = (function() {
|
|
17
17
|
});
|
18
18
|
|
19
19
|
var runInSandbox = (function(js, inputPath) {
|
20
|
-
|
21
|
-
if (arguments.length < 2) // if inputPath is missing
|
20
|
+
if (arguments.length < 2)
|
22
21
|
var inputPath = undefined;
|
23
22
|
|
24
23
|
(function() {
|
@@ -54,18 +53,15 @@ cli.version = (function() {
|
|
54
53
|
});
|
55
54
|
|
56
55
|
cli.repl = (function(args) {
|
57
|
-
// args:required
|
58
56
|
return require("../lib/repl");
|
59
57
|
});
|
60
58
|
|
61
59
|
var readStdin = (function(fn) {
|
62
|
-
// fn:required
|
63
60
|
var stdin = process.stdin,
|
64
61
|
data = "";
|
65
62
|
stdin.resume();
|
66
63
|
stdin.setEncoding("utf8");
|
67
64
|
stdin.on("data", (function(chunk) {
|
68
|
-
// chunk:required
|
69
65
|
return data = (data + chunk);
|
70
66
|
}));
|
71
67
|
return stdin.on("end", (function() {
|
@@ -74,15 +70,12 @@ var readStdin = (function(fn) {
|
|
74
70
|
});
|
75
71
|
|
76
72
|
cli.eval = (function(args, options) {
|
77
|
-
// args:required options:required
|
78
73
|
(options)["execute"] = true;
|
79
74
|
return cli.input(args, options);
|
80
75
|
});
|
81
76
|
|
82
77
|
cli.input = (function(args, options) {
|
83
|
-
// args:required options:required
|
84
78
|
var process = (function(sibilantCode) {
|
85
|
-
// sibilantCode:required
|
86
79
|
var jsCode = sibilant.translateAll(sibilantCode);
|
87
80
|
return (function() {
|
88
81
|
if (options.execute) {
|
@@ -103,9 +96,7 @@ cli.input = (function(args, options) {
|
|
103
96
|
});
|
104
97
|
|
105
98
|
cli.help = (function(args, options) {
|
106
|
-
// args:required options:required
|
107
99
|
return fs.readFile((__dirname + "/../cli-help"), { encoding: "utf8" }, (function(err, data) {
|
108
|
-
// err:required data:required
|
109
100
|
(function() {
|
110
101
|
if (err) {
|
111
102
|
throw new Error (err);
|
@@ -132,7 +123,6 @@ var outputDir = (function() {
|
|
132
123
|
}
|
133
124
|
})();
|
134
125
|
(cliOptions.file || [ ]).forEach((function(inputFile) {
|
135
|
-
// inputFile:required
|
136
126
|
var inputPath = path.join(process.cwd(), inputFile),
|
137
127
|
translated = sibilant.translateFile(inputPath);
|
138
128
|
return (function() {
|
data/js/sibilant/lib/options.js
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
var bulkMap = (function(arr, fn) {
|
2
|
-
// arr:required fn:required
|
3
2
|
var index = 0,
|
4
3
|
groupSize = fn.length,
|
5
4
|
retArr = [ ];
|
@@ -17,12 +16,10 @@ var bulkMap = (function(arr, fn) {
|
|
17
16
|
});
|
18
17
|
|
19
18
|
var inject = (function(start, items, fn) {
|
20
|
-
// start:required items:required fn:required
|
21
19
|
var value = start;
|
22
20
|
(function() {
|
23
21
|
if ((items) && (items).constructor.name === "Array") {
|
24
22
|
return items.forEach((function(item, index) {
|
25
|
-
// item:required index:required
|
26
23
|
return value = fn(value, item, index);
|
27
24
|
}));
|
28
25
|
}
|
@@ -31,18 +28,14 @@ var inject = (function(start, items, fn) {
|
|
31
28
|
});
|
32
29
|
|
33
30
|
var map = (function(items, fn) {
|
34
|
-
// items:required fn:required
|
35
31
|
return inject([ ], items, (function(collector, item, index) {
|
36
|
-
// collector:required item:required index:required
|
37
32
|
collector.push(fn(item, index));
|
38
33
|
return collector;
|
39
34
|
}));
|
40
35
|
});
|
41
36
|
|
42
37
|
var select = (function(items, fn) {
|
43
|
-
// items:required fn:required
|
44
38
|
return inject([ ], items, (function(collector, item, index) {
|
45
|
-
// collector:required item:required index:required
|
46
39
|
(function() {
|
47
40
|
if (fn(item, index)) {
|
48
41
|
return collector.push(item);
|
@@ -53,7 +46,6 @@ var select = (function(items, fn) {
|
|
53
46
|
});
|
54
47
|
|
55
48
|
var detect = (function(items, fn) {
|
56
|
-
// items:required fn:required
|
57
49
|
var returnItem = undefined,
|
58
50
|
index = 0,
|
59
51
|
items = items;
|
@@ -74,7 +66,6 @@ var detect = (function(items, fn) {
|
|
74
66
|
});
|
75
67
|
|
76
68
|
var reject = (function(items, fn) {
|
77
|
-
// items:required fn:required
|
78
69
|
var args = [ items, fn ];
|
79
70
|
return select(items, (function() {
|
80
71
|
return (!fn.apply(undefined, arguments));
|
@@ -82,19 +73,15 @@ var reject = (function(items, fn) {
|
|
82
73
|
});
|
83
74
|
|
84
75
|
var compact = (function(arr) {
|
85
|
-
// arr:required
|
86
76
|
return select(arr, (function(item) {
|
87
|
-
// item:required
|
88
77
|
return (!!(item));
|
89
78
|
}));
|
90
79
|
});
|
91
80
|
|
92
81
|
var flatten = (function(items) {
|
93
|
-
// items:rest
|
94
82
|
var items = Array.prototype.slice.call(arguments, 0);
|
95
83
|
|
96
84
|
return inject([ ], items, (function(collector, item) {
|
97
|
-
// collector:required item:required
|
98
85
|
return collector.concat((function() {
|
99
86
|
if ((item) && (item).constructor.name === "Array") {
|
100
87
|
return flatten.apply(undefined, item);
|
@@ -107,8 +94,7 @@ var flatten = (function(items) {
|
|
107
94
|
|
108
95
|
|
109
96
|
var extractOptions = (function(config, args) {
|
110
|
-
|
111
|
-
if (arguments.length < 2) // if args is missing
|
97
|
+
if (arguments.length < 2)
|
112
98
|
var args = undefined;
|
113
99
|
|
114
100
|
var args = (args || process.argv.slice(2)),
|
@@ -118,12 +104,10 @@ var extractOptions = (function(config, args) {
|
|
118
104
|
config = (config || { }),
|
119
105
|
unlabeled = [ ];
|
120
106
|
var label__QUERY = (function(item) {
|
121
|
-
// item:required
|
122
107
|
return (typeof(item) === "string" && /^-/.test(item));
|
123
108
|
});
|
124
109
|
;
|
125
110
|
var synonymLookup = (function(item) {
|
126
|
-
// item:required
|
127
111
|
var configEntry = (config)[item];
|
128
112
|
return (function() {
|
129
113
|
if (typeof(configEntry) === "string") {
|
@@ -135,19 +119,16 @@ var extractOptions = (function(config, args) {
|
|
135
119
|
});
|
136
120
|
;
|
137
121
|
var takesArgs__QUERY = (function(item) {
|
138
|
-
// item:required
|
139
122
|
return (false !== (config)[labelFor(item)]);
|
140
123
|
});
|
141
124
|
;
|
142
125
|
defaultLabel = synonymLookup(defaultLabel);
|
143
126
|
currentLabel = defaultLabel;
|
144
127
|
var labelFor = (function(item) {
|
145
|
-
// item:required
|
146
128
|
return synonymLookup(item.replace(/^-+/, ""));
|
147
129
|
});
|
148
130
|
;
|
149
131
|
var addValue = (function(hash, key, value) {
|
150
|
-
// hash:required key:required value:required
|
151
132
|
var currentValue = (hash)[key];
|
152
133
|
(function() {
|
153
134
|
if (typeof(currentValue) === 'undefined') {
|
@@ -167,7 +148,6 @@ var extractOptions = (function(config, args) {
|
|
167
148
|
});
|
168
149
|
;
|
169
150
|
return inject({ }, args, (function(returnHash, item, index) {
|
170
|
-
// returnHash:required item:required index:required
|
171
151
|
(function() {
|
172
152
|
if (("--" === item)) {
|
173
153
|
return afterBreak = true;
|
@@ -199,15 +179,13 @@ var extractOptions = (function(config, args) {
|
|
199
179
|
});
|
200
180
|
|
201
181
|
var processOptions = (function(config) {
|
202
|
-
|
203
|
-
if (arguments.length < 1) // if config is missing
|
182
|
+
if (arguments.length < 1)
|
204
183
|
var config = undefined;
|
205
184
|
|
206
185
|
var options = extractOptions(config);
|
207
186
|
(function() {
|
208
187
|
if (config) {
|
209
188
|
var handlePair = (function(key, value) {
|
210
|
-
// key:required value:required
|
211
189
|
var handle = (config)[key];
|
212
190
|
(function() {
|
213
191
|
if (typeof(handle) === "string") {
|
@@ -221,7 +199,6 @@ var processOptions = (function(config) {
|
|
221
199
|
})();
|
222
200
|
});
|
223
201
|
return Object.keys(options).forEach((function(key) {
|
224
|
-
// key:required
|
225
202
|
return handlePair(key, (options)[key]);
|
226
203
|
}));
|
227
204
|
}
|