sibilant 0.0.1 → 0.0.2

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.
Files changed (47) hide show
  1. data/README.md +8 -4
  2. data/js/sibilant/.gitignore +4 -0
  3. data/js/sibilant/.travis.yml +6 -0
  4. data/js/sibilant/LICENSE +20 -0
  5. data/js/sibilant/README.md +70 -0
  6. data/js/sibilant/bin/sibilant +3 -0
  7. data/js/sibilant/cli-help +79 -0
  8. data/js/sibilant/include/functional.sibilant +57 -0
  9. data/js/sibilant/include/macros.sibilant +374 -0
  10. data/js/sibilant/include/node.sibilant +2 -0
  11. data/js/sibilant/lib/browser.js +685 -0
  12. data/js/sibilant/lib/cli.js +153 -0
  13. data/js/sibilant/lib/options.js +232 -0
  14. data/js/sibilant/lib/repl.js +78 -0
  15. data/js/sibilant/lib/sibilant.js +688 -0
  16. data/js/sibilant/misc/sibilant-mode.el +129 -0
  17. data/js/sibilant/package.json +19 -0
  18. data/js/sibilant/package.sibilant +16 -0
  19. data/js/sibilant/public/index.html +502 -0
  20. data/js/sibilant/public/javascripts/browser.js +685 -0
  21. data/js/sibilant/public/javascripts/jquery-ui.js +392 -0
  22. data/js/sibilant/public/javascripts/jquery.js +154 -0
  23. data/js/sibilant/public/javascripts/macros.sibilant +374 -0
  24. data/js/sibilant/public/javascripts/sibilant.info.sibilant +77 -0
  25. data/js/sibilant/public/sass/_mixins.sass +98 -0
  26. data/js/sibilant/public/sass/sibilant.sass +156 -0
  27. data/js/sibilant/public/stylesheets/Anonymous_Pro-webfont.eot +0 -0
  28. data/js/sibilant/public/stylesheets/Anonymous_Pro-webfont.svg +241 -0
  29. data/js/sibilant/public/stylesheets/Anonymous_Pro-webfont.ttf +0 -0
  30. data/js/sibilant/public/stylesheets/Anonymous_Pro-webfont.woff +0 -0
  31. data/js/sibilant/public/stylesheets/sibilant.css +166 -0
  32. data/js/sibilant/src/browser.sibilant +45 -0
  33. data/js/sibilant/src/cli.sibilant +93 -0
  34. data/js/sibilant/src/core.sibilant +338 -0
  35. data/js/sibilant/src/options.sibilant +65 -0
  36. data/js/sibilant/src/repl.sibilant +59 -0
  37. data/js/sibilant/src/sibilant.sibilant +78 -0
  38. data/js/sibilant/test/defvar.sibilant +5 -0
  39. data/js/sibilant/test/includeFile1.sibilant +1 -0
  40. data/js/sibilant/test/includeFile2.sibilant +1 -0
  41. data/js/sibilant/test/node.sibilant +10 -0
  42. data/js/sibilant/test/slice.sibilant +3 -0
  43. data/js/sibilant/test/test.sibilant +464 -0
  44. data/js/sibilant/test/testHelper.sibilant +80 -0
  45. data/lib/sibilant/version.rb +1 -1
  46. data/sibilant.gemspec +3 -1
  47. metadata +44 -1
@@ -0,0 +1,688 @@
1
+ var sibilant = exports,
2
+ util = require("util"),
3
+ path = require("path"),
4
+ fs = require("fs"),
5
+ error = (function(str) {
6
+ // str:required
7
+ throw new Error (str);
8
+ }),
9
+ inspect = util.inspect;
10
+ var bulkMap = (function(arr, fn) {
11
+ // arr:required fn:required
12
+ var index = 0,
13
+ groupSize = fn.length,
14
+ retArr = [ ];
15
+ (function() {
16
+ var __returnValue__ = undefined;
17
+ while ((index < arr.length)) {
18
+ __returnValue__ = (function() {
19
+ retArr.push(fn.apply(undefined, arr.slice(index, (index + groupSize))));
20
+ return index += groupSize;
21
+ })();
22
+ };
23
+ return __returnValue__;
24
+ })();
25
+ return retArr;
26
+ });
27
+
28
+ var inject = (function(start, items, fn) {
29
+ // start:required items:required fn:required
30
+ var value = start;
31
+ (function() {
32
+ if ((items) && (items).constructor.name === "Array") {
33
+ return items.forEach((function(item, index) {
34
+ // item:required index:required
35
+ return value = fn(value, item, index);
36
+ }));
37
+ }
38
+ })();
39
+ return value;
40
+ });
41
+
42
+ var map = (function(items, fn) {
43
+ // items:required fn:required
44
+ return inject([ ], items, (function(collector, item, index) {
45
+ // collector:required item:required index:required
46
+ collector.push(fn(item, index));
47
+ return collector;
48
+ }));
49
+ });
50
+
51
+ var select = (function(items, fn) {
52
+ // items:required fn:required
53
+ return inject([ ], items, (function(collector, item, index) {
54
+ // collector:required item:required index:required
55
+ (function() {
56
+ if (fn(item, index)) {
57
+ return collector.push(item);
58
+ }
59
+ })();
60
+ return collector;
61
+ }));
62
+ });
63
+
64
+ var detect = (function(items, fn) {
65
+ // items:required fn:required
66
+ var returnItem = undefined,
67
+ index = 0,
68
+ items = items;
69
+ return (function() {
70
+ var __returnValue__ = undefined;
71
+ while ((!((items.length === index) || returnItem))) {
72
+ __returnValue__ = (function() {
73
+ (function() {
74
+ if (fn((items)[index], index)) {
75
+ return returnItem = (items)[index];
76
+ }
77
+ })();
78
+ return ((index)++);
79
+ })();
80
+ };
81
+ return __returnValue__;
82
+ })();
83
+ });
84
+
85
+ var reject = (function(items, fn) {
86
+ // items:required fn:required
87
+ var args = [ items, fn ];
88
+ return select(items, (function() {
89
+ return (!fn.apply(undefined, arguments));
90
+ }));
91
+ });
92
+
93
+ var compact = (function(arr) {
94
+ // arr:required
95
+ return select(arr, (function(item) {
96
+ // item:required
97
+ return (!!(item));
98
+ }));
99
+ });
100
+
101
+ var flatten = (function(items) {
102
+ // items:rest
103
+ var items = Array.prototype.slice.call(arguments, 0);
104
+
105
+ return inject([ ], items, (function(collector, item) {
106
+ // collector:required item:required
107
+ return collector.concat((function() {
108
+ if ((item) && (item).constructor.name === "Array") {
109
+ return flatten.apply(undefined, item);
110
+ } else {
111
+ return item;
112
+ }
113
+ })());
114
+ }));
115
+ });
116
+
117
+
118
+ sibilant.packageInfo = (function() {
119
+ var fs = require("fs");
120
+ return JSON.parse(fs.readFileSync((__dirname + "/../package.json")));
121
+ });
122
+
123
+ sibilant.versionString = (function() {
124
+ var package = sibilant.packageInfo(),
125
+ path = require("path");
126
+ return (package.name + " version " + package.version + "\n(at " + path.join(__dirname, "..") + ")");
127
+ });
128
+
129
+ sibilant.stripShebang = (function(data) {
130
+ // data:required
131
+ return data.replace(/^#!.*\n/, "");
132
+ });
133
+
134
+ (sibilant)["file"] = "eval.sibilant";
135
+ (sibilant)["dir"] = process.cwd();
136
+ var withDirAndFile = (function(dir, file, fn) {
137
+ // dir:required file:required fn:required
138
+ var before = {
139
+ dir: sibilant.dir,
140
+ file: sibilant.file
141
+ };
142
+ (sibilant)["dir"] = dir;
143
+ (sibilant)["file"] = file;
144
+ var retval = fn();
145
+ (sibilant)["dir"] = before.dir;
146
+ (sibilant)["file"] = before.file;
147
+ return retval;
148
+ });
149
+
150
+ sibilant.translateFile = (function(fileName) {
151
+ // fileName:required
152
+ return withDirAndFile(path.dirname(fileName), fileName, (function() {
153
+ return sibilant.translateAll(sibilant.stripShebang(fs.readFileSync(fileName, "utf8")));
154
+ }));
155
+ });
156
+
157
+ sibilant.version = (function() {
158
+ return (sibilant.packageInfo())["version"];
159
+ });
160
+
161
+ (require.extensions)[".sibilant"] = (function(module, filename) {
162
+ // module:required filename:required
163
+ var content = sibilant.translateFile(filename);
164
+ return module._compile(content, filename);
165
+ });
166
+ sibilant.include = (function(file) {
167
+ // file:required
168
+ (function() {
169
+ if ((!file.match((new RegExp(".sibilant$", undefined))))) {
170
+ return file = (file + ".sibilant");
171
+ }
172
+ })();
173
+ (function() {
174
+ if (file.match((new RegExp("^\.\.?/", undefined)))) {
175
+ return file = (sibilant.dir + "/" + file);
176
+ }
177
+ })();
178
+ var resolved = require.resolve(file);
179
+ return sibilant.translateFile(resolved);
180
+ });
181
+
182
+ (sibilant)["tokens"] = { };
183
+ (sibilant.tokens)["regex"] = "(\\/(\\\\\\\/|[^\\/\\n])+\\/[glim]*)";
184
+ (sibilant.tokens)["comment"] = "(;.*)";
185
+ (sibilant.tokens)["string"] = "(\"(([^\"]|(\\\\\"))*[^\\\\])?\")";
186
+ (sibilant.tokens)["number"] = "(-?[0-9][0-9.,]*)";
187
+ (sibilant.tokens)["literal"] = "(-?[*.$a-zA-Z][*.a-zA-Z0-9-]*(\\?|!)?)";
188
+ (sibilant.tokens)["special"] = "([&']?)";
189
+ (sibilant.tokens)["otherChar"] = "([><=!\\+\\/\\*-]+)";
190
+ (sibilant.tokens)["openParen"] = "(\\()";
191
+ (sibilant.tokens)["specialOpenParen"] = "('?\\()";
192
+ (sibilant.tokens)["closeParen"] = "(\\))";
193
+ (sibilant.tokens)["alternativeParens"] = "\\{|\\[|\\}|\\]";
194
+ (sibilant.tokens)["specialLiteral"] = (sibilant.tokens.special + sibilant.tokens.literal);
195
+ (sibilant)["tokenPrecedence"] = [ "regex", "comment", "string", "number", "specialLiteral", "otherChar", "specialOpenParen", "closeParen", "alternativeParens" ];
196
+ var tokenize = sibilant.tokenize = (function(string) {
197
+ // string:required
198
+ var tokens = [ ],
199
+ parseStack = [ tokens ],
200
+ specials = [ ];
201
+ var acceptToken = (function(token) {
202
+ // token:required
203
+ return (parseStack)[0].push(token);
204
+ });
205
+ ;
206
+ var increaseNesting = (function() {
207
+ var newArr = [ ];
208
+ acceptToken(newArr);
209
+ return parseStack.unshift(newArr);
210
+ });
211
+ ;
212
+ var decreaseNesting = (function() {
213
+ specials.shift();
214
+ parseStack.shift();
215
+ return (function() {
216
+ if ((parseStack.length === 0)) {
217
+ throw new Error (("unbalanced parens:\n" + inspect(parseStack)));
218
+ }
219
+ })();
220
+ });
221
+ ;
222
+ var handleToken = (function(token) {
223
+ // token:required
224
+ var special = (token)[0],
225
+ token = token;
226
+ (function() {
227
+ if ((special === "'")) {
228
+ token = token.slice(1);
229
+ increaseNesting();
230
+ return acceptToken("quote");
231
+ } else {
232
+ return special = false;
233
+ }
234
+ })();
235
+ specials.unshift((!!(special)));
236
+ (function() {
237
+ switch(token) {
238
+ case "(":
239
+ return increaseNesting();
240
+
241
+ case "]":
242
+ case "}":
243
+ case ")":
244
+ return decreaseNesting();
245
+
246
+ case "{":
247
+ increaseNesting();
248
+ return acceptToken("hash");
249
+
250
+ case "[":
251
+ increaseNesting();
252
+ return acceptToken("list");
253
+
254
+ default:
255
+ return (function() {
256
+ if (token.match((new RegExp(("^" + sibilant.tokens.number + "$"), undefined)))) {
257
+ return acceptToken(parseFloat(token.replace((new RegExp(",", "g")), "")));
258
+ } else {
259
+ return acceptToken(token);
260
+ }
261
+ })();
262
+ }
263
+ })();
264
+ return (function() {
265
+ if (((token !== "(") && specials.shift())) {
266
+ return decreaseNesting();
267
+ }
268
+ })();
269
+ });
270
+ ;
271
+ var orderedRegexen = map(sibilant.tokenPrecedence, (function(x) {
272
+ // x:required
273
+ return (sibilant.tokens)[x];
274
+ })),
275
+ masterRegex = (new RegExp((orderedRegexen).join("|"), "g"));
276
+ string // chain
277
+ .match(masterRegex)
278
+ .forEach(handleToken)
279
+ ;
280
+ (function() {
281
+ if ((parseStack.length > 1)) {
282
+ return error("unexpected EOF, probably missing a )\n", inspect((parseStack)[0]));
283
+ }
284
+ })();
285
+ return tokens;
286
+ });
287
+ var indent = (function(args) {
288
+ // args:rest
289
+ var args = Array.prototype.slice.call(arguments, 0);
290
+
291
+ return (compact(args) // chain
292
+ .join("\n")
293
+ .replace(/^/, "\n")
294
+ .replace(/\n/g, "\n ")
295
+ + "\n");
296
+ });
297
+
298
+ var constructHash = (function(arrayOfArrays) {
299
+ // arrayOfArrays:required
300
+ return inject({ }, arrayOfArrays, (function(object, item) {
301
+ // object:required item:required
302
+ (object)[(item)[0]] = (object)[(item)[1]];
303
+ return object;
304
+ }));
305
+ });
306
+
307
+ var macros = { };
308
+ (sibilant)["macros"] = macros;
309
+ (macros)["return"] = (function(token) {
310
+ // token:required
311
+ var defaultReturn = ("return " + translate(token));
312
+ return (function() {
313
+ if ((token) && (token).constructor.name === "Array") {
314
+ return (function() {
315
+ switch((token)[0]) {
316
+ case "return":
317
+ case "throw":
318
+ case "progn":
319
+ return translate(token);
320
+
321
+ case "delete":
322
+ var deleteMacro = (macros)["delete"];
323
+ return (function() {
324
+ if ((token.length < 3)) {
325
+ return defaultReturn;
326
+ } else {
327
+ return (deleteMacro.apply(undefined, token.slice(1, -1)) + "\nreturn " + deleteMacro((token.slice(-1))[0]));
328
+ }
329
+ })();
330
+
331
+ case "setf":
332
+ return (function() {
333
+ if ((token.length < 4)) {
334
+ return defaultReturn;
335
+ } else {
336
+ return (macros.setf.apply(undefined, token.slice(1, (token.length - 2))) + "\nreturn " + macros.setf.apply(undefined, token.slice(-2)));
337
+ }
338
+ })();
339
+
340
+ case "set":
341
+ return (function() {
342
+ if ((token.length < 5)) {
343
+ return defaultReturn;
344
+ } else {
345
+ var obj = (token)[1],
346
+ nonReturnPart = token.slice(2, (token.length - 2)),
347
+ returnPart = token.slice(-2);
348
+ nonReturnPart.unshift(obj);
349
+ returnPart.unshift(obj);
350
+ return (macros.set.apply(undefined, nonReturnPart) + "\nreturn " + macros.set.apply(undefined, returnPart));
351
+ }
352
+ })();
353
+
354
+ default:
355
+ return defaultReturn;
356
+ }
357
+ })();
358
+ } else {
359
+ return defaultReturn;
360
+ }
361
+ })();
362
+ });
363
+ var asStatement = (function(string) {
364
+ // string:required
365
+ return string // chain
366
+ .toString()
367
+ .replace(/;*\s*$/, ";")
368
+ ;
369
+ });
370
+
371
+ macros.statement = (function(args) {
372
+ // args:rest
373
+ var args = Array.prototype.slice.call(arguments, 0);
374
+
375
+ return (macros.call.apply(undefined, args) + ";\n");
376
+ });
377
+
378
+ macros.progn = (function(body) {
379
+ // body:rest
380
+ var body = Array.prototype.slice.call(arguments, 0);
381
+
382
+ var lastIndex = Math.max(0, (body.length - 1));
383
+ (body)[lastIndex] = [ "return", (body)[lastIndex] ];
384
+ return (map(body, (function(arg) {
385
+ // arg:required
386
+ return (asStatement(translate(arg)));
387
+ }))).join("\n");
388
+ });
389
+
390
+ macros.call = (function(fnName, args) {
391
+ // fnName:required args:rest
392
+ var args = Array.prototype.slice.call(arguments, 1);
393
+
394
+ return (translate(fnName) + "(" + (map(args, translate)).join(", ") + ")");
395
+ });
396
+
397
+ macros.defun = (function(fnName, argsAndBody) {
398
+ // fnName:required argsAndBody:rest
399
+ var argsAndBody = Array.prototype.slice.call(arguments, 1);
400
+
401
+ var fnNameTr = translate(fnName),
402
+ start = (function() {
403
+ if (fnNameTr.match(/\./)) {
404
+ return "";
405
+ } else {
406
+ return "var ";
407
+ }
408
+ })();
409
+ return (start + fnNameTr + " = " + macros.lambda.apply(undefined, argsAndBody) + ";\n");
410
+ });
411
+
412
+ macros.defmacro = (function(name, argsAndBody) {
413
+ // name:required argsAndBody:rest
414
+ var argsAndBody = Array.prototype.slice.call(arguments, 1);
415
+
416
+ var js = macros.lambda.apply(undefined, argsAndBody),
417
+ name = translate(name);
418
+ (function() {
419
+ try {
420
+ return (macros)[name] = eval(js);
421
+ } catch (e) {
422
+ return error(("error in parsing macro " + name + ":\n" + indent(js)));
423
+ }
424
+ })();
425
+ return undefined;
426
+ });
427
+
428
+ macros.concat = (function(args) {
429
+ // args:rest
430
+ var args = Array.prototype.slice.call(arguments, 0);
431
+
432
+ return ("(" + (map(args, translate)).join(" + ") + ")");
433
+ });
434
+
435
+ var transformArgs = (function(arglist) {
436
+ // arglist:required
437
+ var last = undefined,
438
+ args = [ ];
439
+ arglist.forEach((function(arg) {
440
+ // arg:required
441
+ return (function() {
442
+ if (((arg)[0] === "&")) {
443
+ return last = arg.slice(1);
444
+ } else {
445
+ args.push([ (last || "required"), arg ]);
446
+ return last = null;
447
+ }
448
+ })();
449
+ }));
450
+ (function() {
451
+ if (last) {
452
+ return error(("unexpected argument modifier: " + last));
453
+ }
454
+ })();
455
+ return args;
456
+ });
457
+
458
+ macros.reverse = (function(arr) {
459
+ // arr:required
460
+ var reversed = [ ];
461
+ arr.forEach((function(item) {
462
+ // item:required
463
+ return reversed.unshift(item);
464
+ }));
465
+ return reversed;
466
+ });
467
+
468
+ var reverse = macros.reverse;
469
+ var buildArgsString = (function(args, rest) {
470
+ // args:required rest:required
471
+ var argsString = "",
472
+ optionalCount = 0;
473
+ args.forEach((function(arg, optionIndex) {
474
+ // arg:required optionIndex:required
475
+ return (function() {
476
+ if (((arg)[0] === "optional")) {
477
+ argsString = (argsString + "if (arguments.length < " + (args.length - optionalCount) + ")" + " // if " + translate((arg)[1]) + " is missing" + indent(("var " + map(args.slice((optionIndex + 1)), (function(arg, argIndex) {
478
+ // arg:required argIndex:required
479
+ return (translate((arg)[1]) + " = " + translate(((args)[(optionIndex + argIndex)])[1]));
480
+ })) // chain
481
+ .reverse()
482
+ .concat((translate((arg)[1]) + " = undefined"))
483
+ .join(", ")
484
+ + ";")));
485
+ return ((optionalCount)++);
486
+ }
487
+ })();
488
+ }));
489
+ return (function() {
490
+ if (typeof(rest) !== 'undefined') {
491
+ return (argsString + "var " + translate((rest)[1]) + " = Array.prototype.slice.call(arguments, " + args.length + ");\n");
492
+ } else {
493
+ return argsString;
494
+ }
495
+ })();
496
+ });
497
+
498
+ var buildCommentString = (function(args) {
499
+ // args:required
500
+ return (function() {
501
+ if (((args).length === 0)) {
502
+ return "";
503
+ } else {
504
+ return ("// " + (map(args, (function(arg) {
505
+ // arg:required
506
+ return (translate((arg)[1]) + ":" + (arg)[0]);
507
+ }))).join(" "));
508
+ }
509
+ })();
510
+ });
511
+
512
+ // brain 'splode
513
+ macros.lambda = (function(arglist, body) {
514
+ // arglist:required body:rest
515
+ var body = Array.prototype.slice.call(arguments, 1);
516
+
517
+ var args = transformArgs(arglist),
518
+ rest = (select(args, (function(arg) {
519
+ // arg:required
520
+ return ("rest" === (arg)[0]);
521
+ })))[0],
522
+ docString = undefined;
523
+ (body)[(body.length - 1)] = [ "return", (body)[(body.length - 1)] ];
524
+ (function() {
525
+ if (((typeof((body)[0]) === "string") && (body)[0].match(/^".*"$/))) {
526
+ return docString = ("/* " + eval(body.shift()) + " */\n");
527
+ }
528
+ })();
529
+ var noRestArgs = (function() {
530
+ if (rest) {
531
+ return args.slice(0, -1);
532
+ } else {
533
+ return args;
534
+ }
535
+ })(),
536
+ argsString = buildArgsString(noRestArgs, rest),
537
+ commentString = buildCommentString(args);
538
+ return ("(function(" + (map(args, (function(arg) {
539
+ // arg:required
540
+ return translate((arg)[1]);
541
+ }))).join(", ") + ") {" + indent(commentString, docString, argsString, (map(body, (function(stmt) {
542
+ // stmt:required
543
+ var tstmt = translate(stmt);
544
+ return (tstmt + (function() {
545
+ if (((tstmt.slice(-1))[0] === ";")) {
546
+ return "";
547
+ } else {
548
+ return ";";
549
+ }
550
+ })());
551
+ }))).join("\n")) + "})");
552
+ });
553
+
554
+ macros.quote = (function(item) {
555
+ // item:required
556
+ return (function() {
557
+ if (("Array" === item.constructor.name)) {
558
+ return ("[ " + (map(item, macros.quote)).join(", ") + " ]");
559
+ } else {
560
+ return (function() {
561
+ if (("number" === typeof(item))) {
562
+ return item;
563
+ } else {
564
+ return ("\"" + literal(item) + "\"");
565
+ }
566
+ })();
567
+ }
568
+ })();
569
+ });
570
+
571
+ macros.hash = (function(pairs) {
572
+ // pairs:rest
573
+ var pairs = Array.prototype.slice.call(arguments, 0);
574
+
575
+ (function() {
576
+ if ((0 !== (pairs.length % 2))) {
577
+ return error(("odd number of key-value pairs in hash: " + inspect(pairs)));
578
+ }
579
+ })();
580
+ var pairStrings = bulkMap(pairs, (function(key, value) {
581
+ // key:required value:required
582
+ return (translate(key) + ": " + translate(value));
583
+ }));
584
+ return (function() {
585
+ if ((1 >= pairStrings.length)) {
586
+ return ("{ " + (pairStrings).join(", ") + " }");
587
+ } else {
588
+ return ("{" + indent((pairStrings).join(",\n")) + "}");
589
+ }
590
+ })();
591
+ });
592
+
593
+ var literal = (function(string) {
594
+ // string:required
595
+ return inject(string // chain
596
+ .replace(/\*/g, "_")
597
+ .replace(/\?$/, "__QUERY")
598
+ .replace(/!$/, "__BANG")
599
+ , string.match(/-(.)/g), (function(returnString, match) {
600
+ // returnString:required match:required
601
+ return returnString.replace(match, (match)[1].toUpperCase());
602
+ }));
603
+ });
604
+
605
+ var translate = (function(token, hint) {
606
+ // token:required hint:required
607
+ var hint = hint;
608
+ (function() {
609
+ if ((hint && typeof((macros)[hint]) === 'undefined')) {
610
+ return hint = undefined;
611
+ }
612
+ })();
613
+ return (function() {
614
+ if (typeof(token) !== 'undefined') {
615
+ (function() {
616
+ if (typeof(token) === "string") {
617
+ return token = token.trim();
618
+ }
619
+ })();
620
+ return (function() {
621
+ try {
622
+ return (function() {
623
+ if ((token) && (token).constructor.name === "Array") {
624
+ return (function() {
625
+ if (typeof((macros)[translate((token)[0])]) !== 'undefined') {
626
+ return (macros)[translate((token)[0])].apply(undefined, token.slice(1));
627
+ } else {
628
+ return (macros)[(hint || "call")].apply(undefined, token);
629
+ }
630
+ })();
631
+ } else {
632
+ return (function() {
633
+ if ((typeof(token) === "string" && token.match((new RegExp(("^" + sibilant.tokens.literal + "$"), undefined))))) {
634
+ return literal(token);
635
+ } else {
636
+ return (function() {
637
+ if ((typeof(token) === "string" && token.match((new RegExp("^;", undefined))))) {
638
+ return token.replace((new RegExp("^;+", undefined)), "//");
639
+ } else {
640
+ return (function() {
641
+ if ((typeof(token) === "string" && ("\"" === (token)[0] &&
642
+ "\"" === (token.slice(-1))[0]))) {
643
+ return token // chain
644
+ .split("\n")
645
+ .join("\\n\" +\n\"");
646
+ } else {
647
+ return token;
648
+ }
649
+ })();
650
+ }
651
+ })();
652
+ }
653
+ })();
654
+ }
655
+ })();
656
+ } catch (e) {
657
+ return error((e.stack + "\n" + "Encountered when attempting to process:\n" + indent(inspect(token))));
658
+ }
659
+ })();
660
+ }
661
+ })();
662
+ });
663
+
664
+ (sibilant)["translate"] = translate;
665
+ var translateAll = (function(contents) {
666
+ // contents:required
667
+ var buffer = "";
668
+ tokenize(contents).forEach((function(token) {
669
+ // token:required
670
+ var line = translate(token, "statement");
671
+ return (function() {
672
+ if (line) {
673
+ return buffer = (buffer + line + "\n");
674
+ }
675
+ })();
676
+ }));
677
+ return buffer;
678
+ });
679
+
680
+ (sibilant)["translateAll"] = translateAll;
681
+
682
+ macros.include = (function(file) {
683
+ // file:required
684
+ return sibilant.include(eval(translate(file)));
685
+ });
686
+
687
+ sibilant.include(path.normalize((__dirname + "/../include/macros")));
688
+