mochiscript 0.4.6.pre3 → 0.4.6.pre4
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/bin/ms-bootstrap +4 -0
- data/lib/mochiscript/core.rb +60 -60
- data/lib/mochiscript/rails/engine.rb +2 -23
- data/lib/mochiscript/sinatra/templates.rb +8 -0
- data/lib/mochiscript/tilt/template.rb +19 -0
- data/lib/mochiscript/version.rb +1 -1
- data/lib/mochiscript.rb +8 -1
- data/vendor/assets/javascripts/mochiscript.js +14 -14
- metadata +42 -44
data/bin/ms-bootstrap
ADDED
data/lib/mochiscript/core.rb
CHANGED
@@ -260,11 +260,11 @@ var JS2 = $m;
|
|
260
260
|
|
261
261
|
|
262
262
|
$m.Class.extend("JSML", function(KLASS, OO){
|
263
|
-
OO.addStaticMember("process", function(txt){
|
263
|
+
OO.addStaticMember("process", function(txt){var self=this;
|
264
264
|
return new $m.JSML(txt);
|
265
265
|
});
|
266
266
|
|
267
|
-
OO.addMember("initialize", function(txt){
|
267
|
+
OO.addMember("initialize", function(txt){var self=this;
|
268
268
|
var lines = txt.split(/\n/);
|
269
269
|
this.root = new $c.JSMLElement();
|
270
270
|
this.stack = [ this.root ];
|
@@ -284,11 +284,11 @@ $m.Class.extend("JSML", function(KLASS, OO){
|
|
284
284
|
};
|
285
285
|
});
|
286
286
|
|
287
|
-
OO.addMember("flatten", function(){
|
287
|
+
OO.addMember("flatten", function(){var self=this;
|
288
288
|
return this.root.flatten();
|
289
289
|
});
|
290
290
|
|
291
|
-
OO.addMember("processLine", function(line){
|
291
|
+
OO.addMember("processLine", function(line){var self=this;
|
292
292
|
if (line.match(/^\s*$/)) return;
|
293
293
|
|
294
294
|
var ele = new $m.JSMLElement(line);
|
@@ -312,11 +312,11 @@ $m.Class.extend("JSML", function(KLASS, OO){
|
|
312
312
|
});
|
313
313
|
|
314
314
|
|
315
|
-
OO.addMember("getScope", function(){
|
315
|
+
OO.addMember("getScope", function(){var self=this;
|
316
316
|
return this.stack.length - 1;
|
317
317
|
});
|
318
318
|
|
319
|
-
OO.addMember("getLast", function(){
|
319
|
+
OO.addMember("getLast", function(){var self=this;
|
320
320
|
return this.stack[this.stack.length-1];
|
321
321
|
});
|
322
322
|
|
@@ -330,7 +330,7 @@ $m.Class.extend("JSMLElement", function(KLASS, OO){
|
|
330
330
|
OO.addMember("SCOPE_OFFSET", 1);
|
331
331
|
OO.addMember("SELF_CLOSING", { area: null, basefont: null, br: null, hr: null, input: null, img: null, link: null, meta: null });
|
332
332
|
|
333
|
-
OO.addMember("initialize", function(line){
|
333
|
+
OO.addMember("initialize", function(line){var self=this;
|
334
334
|
this.children = [];
|
335
335
|
|
336
336
|
if (line == null) {
|
@@ -347,11 +347,11 @@ $m.Class.extend("JSMLElement", function(KLASS, OO){
|
|
347
347
|
this.parse(spaceMatch[2]);
|
348
348
|
});
|
349
349
|
|
350
|
-
OO.addMember("push", function(child){
|
350
|
+
OO.addMember("push", function(child){var self=this;
|
351
351
|
this.children.push(child);
|
352
352
|
});
|
353
353
|
|
354
|
-
OO.addMember("parse", function(line){
|
354
|
+
OO.addMember("parse", function(line){var self=this;
|
355
355
|
this.attributes;
|
356
356
|
this.line = line;
|
357
357
|
var self = this;
|
@@ -396,7 +396,7 @@ $m.Class.extend("JSMLElement", function(KLASS, OO){
|
|
396
396
|
}
|
397
397
|
});
|
398
398
|
|
399
|
-
OO.addMember("flatten", function(){
|
399
|
+
OO.addMember("flatten", function(){var self=this;
|
400
400
|
var out = [];
|
401
401
|
|
402
402
|
for (var i=0; i<this.children.length; i++) {
|
@@ -424,21 +424,21 @@ $m.Class.extend("JSMLElement", function(KLASS, OO){
|
|
424
424
|
return out;
|
425
425
|
});
|
426
426
|
|
427
|
-
OO.addMember("handleJsEQ", function(out){
|
427
|
+
OO.addMember("handleJsEQ", function(out){var self=this;
|
428
428
|
if (this.jsEQ) {
|
429
429
|
this.jsEQ = this.jsEQ.replace(/;\s*$/, '');
|
430
430
|
out.unshift('out.push(' + this.jsEQ + ');\n');
|
431
431
|
}
|
432
432
|
});
|
433
433
|
|
434
|
-
OO.addMember("handleContent", function(out){
|
434
|
+
OO.addMember("handleContent", function(out){var self=this;
|
435
435
|
if (this.content != null && this.content.length > 0) {
|
436
436
|
out.unshift('out.push(' + JSON.stringify(this.content) + ');\n');
|
437
437
|
}
|
438
438
|
});
|
439
439
|
|
440
440
|
|
441
|
-
OO.addMember("handleJsExec", function(out){
|
441
|
+
OO.addMember("handleJsExec", function(out){var self=this;
|
442
442
|
if (this.jsExec) {
|
443
443
|
out.unshift(this.jsExec);
|
444
444
|
if (this.jsExec.match(/\{\s*$/)) {
|
@@ -447,7 +447,7 @@ $m.Class.extend("JSMLElement", function(KLASS, OO){
|
|
447
447
|
}
|
448
448
|
});
|
449
449
|
|
450
|
-
OO.addStaticMember("parseAttributes", function(hash, classes, id){
|
450
|
+
OO.addStaticMember("parseAttributes", function(hash, classes, id){var self=this;
|
451
451
|
var out = [];
|
452
452
|
classes = classes || [];
|
453
453
|
if (hash['class']) classes.push(hash['class']);
|
@@ -528,14 +528,14 @@ var EXTRA_REGEX_STRINGS = {
|
|
528
528
|
var MAIN_REGEX = new RegExp("^" + REGEXES.join('|'));
|
529
529
|
|
530
530
|
$m.Class.extend("Tokens", function(KLASS, OO){
|
531
|
-
OO.addMember("initialize", function(str){
|
531
|
+
OO.addMember("initialize", function(str){var self=this;
|
532
532
|
this.orig = str;
|
533
533
|
this.str = str;
|
534
534
|
this.iterator = 0;
|
535
535
|
this.consumed = 0;
|
536
536
|
});
|
537
537
|
|
538
|
-
OO.addMember("peek", function(){
|
538
|
+
OO.addMember("peek", function(){var self=this;
|
539
539
|
if (this._peek) return this._peek;
|
540
540
|
|
541
541
|
var m = this.str.match(MAIN_REGEX);
|
@@ -546,7 +546,7 @@ $m.Class.extend("Tokens", function(KLASS, OO){
|
|
546
546
|
}
|
547
547
|
});
|
548
548
|
|
549
|
-
OO.addStaticMember("regex", function(str){
|
549
|
+
OO.addStaticMember("regex", function(str){var self=this;
|
550
550
|
var regexStr = str.replace(/\*\*/g, "\\s*").replace(/\s+/g, "\\s+").replace(/\>\</g, ">\\s*<").replace(/\<(\w+)\>/g, function($1,$2,$3){
|
551
551
|
return "(" + (EXTRA_REGEX_STRINGS[$2] || TOKENS[TYPES[$2]][1]) + ")";
|
552
552
|
});
|
@@ -554,17 +554,17 @@ $m.Class.extend("Tokens", function(KLASS, OO){
|
|
554
554
|
return new RegExp("^" + regexStr);
|
555
555
|
});
|
556
556
|
|
557
|
-
OO.addMember("consume", function(n){
|
557
|
+
OO.addMember("consume", function(n){var self=this;
|
558
558
|
this.str = this.str.substr(n, this.str.length-n);
|
559
559
|
this._peek = null;
|
560
560
|
this.consumed += n;
|
561
561
|
});
|
562
562
|
|
563
|
-
OO.addMember("length", function(){
|
563
|
+
OO.addMember("length", function(){var self=this;
|
564
564
|
return this.str.length;
|
565
565
|
});
|
566
566
|
|
567
|
-
OO.addMember("lookback", function(n){
|
567
|
+
OO.addMember("lookback", function(n){var self=this;
|
568
568
|
var starting = this.consumed - 1;
|
569
569
|
|
570
570
|
//$m.outs(JSON.stringify(this.orig.substr(starting-10, 10)));
|
@@ -578,18 +578,18 @@ $m.Class.extend("Tokens", function(KLASS, OO){
|
|
578
578
|
return this.orig.substr(starting-n+1, n);
|
579
579
|
});
|
580
580
|
|
581
|
-
OO.addMember("lookahead", function(n){
|
581
|
+
OO.addMember("lookahead", function(n){var self=this;
|
582
582
|
var starting = this.consumed;
|
583
583
|
while (this.orig.charAt(starting).match(/\s/)) starting++;
|
584
584
|
return this.orig.substr(starting, n);
|
585
585
|
});
|
586
586
|
|
587
587
|
|
588
|
-
OO.addMember("any", function(){
|
588
|
+
OO.addMember("any", function(){var self=this;
|
589
589
|
return this.str.length > 0;
|
590
590
|
});
|
591
591
|
|
592
|
-
OO.addMember("match", function(regex){
|
592
|
+
OO.addMember("match", function(regex){var self=this;
|
593
593
|
return this.str.match(regex);
|
594
594
|
});
|
595
595
|
});
|
@@ -619,19 +619,19 @@ var OPTIONS = {};
|
|
619
619
|
$m.Class.extend("RootParser", function(KLASS, OO){
|
620
620
|
OO.addMember("handlers", {});
|
621
621
|
|
622
|
-
OO.addMember("initialize", function(){
|
622
|
+
OO.addMember("initialize", function(){var self=this;
|
623
623
|
this.out = [];
|
624
624
|
this.finished = false;
|
625
625
|
});
|
626
626
|
|
627
|
-
OO.addMember("parse", function(tokens){
|
627
|
+
OO.addMember("parse", function(tokens){var self=this;
|
628
628
|
var len = tokens.length();
|
629
629
|
if (this.startParse(tokens) === false || this.parseTokens(tokens) === false || this.endParse(tokens) === false) return false
|
630
630
|
return len != tokens.length();
|
631
631
|
});
|
632
632
|
|
633
633
|
// TODO: messy clean this process up
|
634
|
-
OO.addMember("parseTokens", function(tokens){
|
634
|
+
OO.addMember("parseTokens", function(tokens){var self=this;
|
635
635
|
var sanity = 100;
|
636
636
|
var origLen = tokens.length();
|
637
637
|
|
@@ -667,15 +667,15 @@ $m.Class.extend("RootParser", function(KLASS, OO){
|
|
667
667
|
}
|
668
668
|
});
|
669
669
|
|
670
|
-
OO.addMember("startParse", function(){ });
|
671
|
-
OO.addMember("endParse", function(){ });
|
670
|
+
OO.addMember("startParse", function(){var self=this; });
|
671
|
+
OO.addMember("endParse", function(){var self=this; });
|
672
672
|
|
673
|
-
OO.addMember("handleToken", function(token, tokens){
|
673
|
+
OO.addMember("handleToken", function(token, tokens){var self=this;
|
674
674
|
this.out.push(token[1]);
|
675
675
|
tokens.consume(token[1].length);
|
676
676
|
});
|
677
677
|
|
678
|
-
OO.addMember("toString", function(){
|
678
|
+
OO.addMember("toString", function(){var self=this;
|
679
679
|
var ret = [];
|
680
680
|
for (var i=0; i<this.out.length; i++) {
|
681
681
|
var ele = this.out[i];
|
@@ -684,11 +684,11 @@ $m.Class.extend("RootParser", function(KLASS, OO){
|
|
684
684
|
return ret.join("");
|
685
685
|
});
|
686
686
|
|
687
|
-
OO.addMember("toJSON", function(){
|
687
|
+
OO.addMember("toJSON", function(){var self=this;
|
688
688
|
return JSON.stringify(this.toStruct());
|
689
689
|
});
|
690
690
|
|
691
|
-
OO.addMember("pp", function(space){
|
691
|
+
OO.addMember("pp", function(space){var self=this;
|
692
692
|
space = space == null ? " " : space + " ";
|
693
693
|
|
694
694
|
var ret = [ space + (this._TYPE || 'NODE') ];
|
@@ -719,7 +719,7 @@ $m.Class.extend("RootParser", function(KLASS, OO){
|
|
719
719
|
return ret.join("\n");
|
720
720
|
});
|
721
721
|
|
722
|
-
OO.addMember("toStruct", function(){
|
722
|
+
OO.addMember("toStruct", function(){var self=this;
|
723
723
|
var ret = [];
|
724
724
|
for (var _i_0=0,ele=null,_list_0=this.out,_len_0=_list_0.length;(ele=_list_0[_i_0])||_i_0<_len_0;_i_0++){
|
725
725
|
ret.push(ele.toStruct ? ele.toStruct() : ele);
|
@@ -728,11 +728,11 @@ $m.Class.extend("RootParser", function(KLASS, OO){
|
|
728
728
|
});
|
729
729
|
|
730
730
|
// intercepts parser class for special cases
|
731
|
-
OO.addMember("getHandler", function(token){
|
731
|
+
OO.addMember("getHandler", function(token){var self=this;
|
732
732
|
return null;
|
733
733
|
});
|
734
734
|
|
735
|
-
OO.addMember("chop", function(){
|
735
|
+
OO.addMember("chop", function(){var self=this;
|
736
736
|
this.out.pop();
|
737
737
|
});
|
738
738
|
});
|
@@ -745,7 +745,7 @@ RootParser.extend("ClassParser", function(KLASS, OO){
|
|
745
745
|
var EXTENDS = Tokens.regex("(?:<EXPORT>|<PUBLIC>|<CLASS>) <CLASSNAME><EXTENDS><CLASSNAME><LCURLY>");
|
746
746
|
|
747
747
|
|
748
|
-
OO.addMember("parse", function(tokens){
|
748
|
+
OO.addMember("parse", function(tokens){var self=this;
|
749
749
|
var m = tokens.match(REGEX) || tokens.match(EXTENDS);
|
750
750
|
var name = m[4];
|
751
751
|
var extending = m[6] || "$m.Class";
|
@@ -767,7 +767,7 @@ RootParser.extend("ModuleParser", function(KLASS, OO){
|
|
767
767
|
var REGEX = Tokens.regex("<MODULE> <CLASSNAME><LCURLY>");
|
768
768
|
|
769
769
|
|
770
|
-
OO.addMember("parse", function(tokens){
|
770
|
+
OO.addMember("parse", function(tokens){var self=this;
|
771
771
|
var m = tokens.match(REGEX);
|
772
772
|
if (!m) return false;
|
773
773
|
var name = m[2];
|
@@ -783,12 +783,12 @@ RootParser.extend("ModuleParser", function(KLASS, OO){
|
|
783
783
|
RootParser.extend("CurlyParser", function(KLASS, OO){
|
784
784
|
OO.addMember("_TYPE", 'CurlyParser');
|
785
785
|
|
786
|
-
OO.addMember("initialize", function(chop){
|
786
|
+
OO.addMember("initialize", function(chop){var self=this;
|
787
787
|
this.chop = chop;
|
788
788
|
this.$super();
|
789
789
|
});
|
790
790
|
|
791
|
-
OO.addMember("handleToken", function(token, tokens){
|
791
|
+
OO.addMember("handleToken", function(token, tokens){var self=this;
|
792
792
|
if (this.curly === undefined) this.curly = 0;
|
793
793
|
if (token[0] == TYPES.RCURLY) {
|
794
794
|
this.curly--;
|
@@ -803,7 +803,7 @@ RootParser.extend("CurlyParser", function(KLASS, OO){
|
|
803
803
|
}
|
804
804
|
});
|
805
805
|
|
806
|
-
OO.addMember("endParse", function(tokens){
|
806
|
+
OO.addMember("endParse", function(tokens){var self=this;
|
807
807
|
if (this.chop) {
|
808
808
|
this.out.pop();
|
809
809
|
this.out.shift();
|
@@ -814,7 +814,7 @@ RootParser.extend("CurlyParser", function(KLASS, OO){
|
|
814
814
|
var CurlyParser = $c.CurlyParser;
|
815
815
|
|
816
816
|
CurlyParser.extend("ClassContentParser", function(KLASS, OO){
|
817
|
-
OO.addMember("getHandler", function(token){
|
817
|
+
OO.addMember("getHandler", function(token){var self=this;
|
818
818
|
switch(token[0]) {
|
819
819
|
case TYPES.STATIC: return "StaticParser";
|
820
820
|
case TYPES.VAR: return "MemberParser";
|
@@ -826,7 +826,7 @@ CurlyParser.extend("ClassContentParser", function(KLASS, OO){
|
|
826
826
|
});
|
827
827
|
|
828
828
|
RootParser.extend("LineParser", function(KLASS, OO){
|
829
|
-
OO.addMember("handleToken", function(token, tokens){
|
829
|
+
OO.addMember("handleToken", function(token, tokens){var self=this;
|
830
830
|
this.$super(token, tokens);
|
831
831
|
if (token[0] == TYPES.SEMICOLON) {
|
832
832
|
this.finished = true;
|
@@ -839,12 +839,12 @@ CurlyParser.extend("PrivateParser", function(KLASS, OO){
|
|
839
839
|
var REGEX = Tokens.regex("<PRIVATE>\\s*");
|
840
840
|
|
841
841
|
|
842
|
-
OO.addMember("startParse", function(tokens){
|
842
|
+
OO.addMember("startParse", function(tokens){var self=this;
|
843
843
|
var m = tokens.match(REGEX);
|
844
844
|
tokens.consume(m[0].length);
|
845
845
|
});
|
846
846
|
|
847
|
-
OO.addMember("endParse", function(tokens){
|
847
|
+
OO.addMember("endParse", function(tokens){var self=this;
|
848
848
|
this.out.pop();
|
849
849
|
this.out.shift();
|
850
850
|
});
|
@@ -856,7 +856,7 @@ RootParser.extend("IStringParser", function(KLASS, OO){
|
|
856
856
|
var BEGIN = Tokens.regex("<ISTRING_START>");
|
857
857
|
|
858
858
|
|
859
|
-
OO.addMember("parse", function(tokens){
|
859
|
+
OO.addMember("parse", function(tokens){var self=this;
|
860
860
|
var m = tokens.match(BEGIN);
|
861
861
|
tokens.consume(m[0].length);
|
862
862
|
this.out.push('"');
|
@@ -883,7 +883,7 @@ RootParser.extend("IStringParser", function(KLASS, OO){
|
|
883
883
|
}
|
884
884
|
});
|
885
885
|
|
886
|
-
OO.addMember("parseMiddle", function(tokens){
|
886
|
+
OO.addMember("parseMiddle", function(tokens){var self=this;
|
887
887
|
var parser = new $c.CurlyParser(true);
|
888
888
|
parser.parse(tokens);
|
889
889
|
this.out.push(parser);
|
@@ -896,7 +896,7 @@ RootParser.extend("StaticParser", function(KLASS, OO){
|
|
896
896
|
var FUNCT_REGEX = Tokens.regex("(<STATIC>(\\s+))<FUNCTION>");
|
897
897
|
|
898
898
|
|
899
|
-
OO.addMember("parseTokens", function(tokens){
|
899
|
+
OO.addMember("parseTokens", function(tokens){var self=this;
|
900
900
|
var varMatch = tokens.match(VAR_REGEX);
|
901
901
|
if (varMatch) {
|
902
902
|
tokens.consume(varMatch[1].length);
|
@@ -923,7 +923,7 @@ RootParser.extend("MemberParser", function(KLASS, OO){
|
|
923
923
|
var REGEX = Tokens.regex("var <IDENT>\\s*=\\s*?");
|
924
924
|
|
925
925
|
|
926
|
-
OO.addMember("parse", function(tokens){
|
926
|
+
OO.addMember("parse", function(tokens){var self=this;
|
927
927
|
var m = tokens.str.match(REGEX);
|
928
928
|
this.name = m[1];
|
929
929
|
tokens.consume(m[0].length);
|
@@ -946,7 +946,7 @@ RootParser.extend("IncludeParser", function(KLASS, OO){
|
|
946
946
|
var REGEX = Tokens.regex("<INCLUDE> <CLASSNAME><SEMICOLON>");
|
947
947
|
|
948
948
|
|
949
|
-
OO.addMember("parse", function(tokens){
|
949
|
+
OO.addMember("parse", function(tokens){var self=this;
|
950
950
|
var m = tokens.match(REGEX);
|
951
951
|
tokens.consume(m[0].length);
|
952
952
|
this.out = [ 'OO.include(', m[2], ');' ];
|
@@ -958,7 +958,7 @@ RootParser.extend("HereDocParser", function(KLASS, OO){
|
|
958
958
|
var REGEX = Tokens.regex("<HEREDOC>");
|
959
959
|
|
960
960
|
|
961
|
-
OO.addMember("parse", function(tokens){
|
961
|
+
OO.addMember("parse", function(tokens){var self=this;
|
962
962
|
var beginning = tokens.match(/^<<(\w+)(?::(\w+))?\s*([;\)])*\n/);
|
963
963
|
var terminator = beginning[1];
|
964
964
|
|
@@ -991,7 +991,7 @@ RootParser.extend("MethodParser", function(KLASS, OO){
|
|
991
991
|
var REGEX = Tokens.regex("<FUNCTION> <IDENT><ARGS><SPACE>");
|
992
992
|
|
993
993
|
|
994
|
-
OO.addMember("parse", function(tokens){
|
994
|
+
OO.addMember("parse", function(tokens){var self=this;
|
995
995
|
var m = tokens.str.match(REGEX);
|
996
996
|
tokens.consume(m[0].length);
|
997
997
|
var name = m[2];
|
@@ -1013,7 +1013,7 @@ RootParser.extend("ShorthandMapperParser", function(KLASS, OO){
|
|
1013
1013
|
var ARGS_REGEX = Tokens.regex("<ARGS>\\s*");
|
1014
1014
|
|
1015
1015
|
|
1016
|
-
OO.addMember("parse", function(tokens){
|
1016
|
+
OO.addMember("parse", function(tokens){var self=this;
|
1017
1017
|
tokens.consume(1);
|
1018
1018
|
var nameMatch = tokens.match(/^([\w\$]+)\s*/);
|
1019
1019
|
tokens.consume(nameMatch[0].length);
|
@@ -1042,7 +1042,7 @@ RootParser.extend("ShorthandFunctionParser", function(KLASS, OO){
|
|
1042
1042
|
var ARGS_REGEX = Tokens.regex("<ARGS>\\s*");
|
1043
1043
|
|
1044
1044
|
|
1045
|
-
OO.addMember("parse", function(tokens){
|
1045
|
+
OO.addMember("parse", function(tokens){var self=this;
|
1046
1046
|
tokens.consume(1);
|
1047
1047
|
var argsMatch = tokens.match(ARGS_REGEX);
|
1048
1048
|
var args = null;
|
@@ -1063,7 +1063,7 @@ RootParser.extend("ShorthandFunctionParser", function(KLASS, OO){
|
|
1063
1063
|
});
|
1064
1064
|
|
1065
1065
|
RootParser.extend("CommentParser", function(KLASS, OO){
|
1066
|
-
OO.addMember("parse", function(tokens){
|
1066
|
+
OO.addMember("parse", function(tokens){var self=this;
|
1067
1067
|
var m = tokens.match(/^\/\/.*?\n/);
|
1068
1068
|
if (m) {
|
1069
1069
|
tokens.consume(m[0].length);
|
@@ -1088,7 +1088,7 @@ RootParser.extend("RegexParser", function(KLASS, OO){
|
|
1088
1088
|
var DIVIDE = /(\}|\)|\+\+|\-\-|[\w\$])$/;
|
1089
1089
|
|
1090
1090
|
|
1091
|
-
OO.addMember("parseTokens", function(tokens){
|
1091
|
+
OO.addMember("parseTokens", function(tokens){var self=this;
|
1092
1092
|
var back = tokens.lookback(2);
|
1093
1093
|
|
1094
1094
|
if (back.match(DIVIDE)) {
|
@@ -1112,7 +1112,7 @@ RootParser.extend("RegexParser", function(KLASS, OO){
|
|
1112
1112
|
});
|
1113
1113
|
|
1114
1114
|
CurlyParser.extend("ReturnableCurlyParser", function(KLASS, OO){
|
1115
|
-
OO.addMember("toString", function(){
|
1115
|
+
OO.addMember("toString", function(){var self=this;
|
1116
1116
|
var ret = this.$super();
|
1117
1117
|
return ret.replace(/^{(\s*)(return)?/, '{$1return ');
|
1118
1118
|
});
|
@@ -1126,7 +1126,7 @@ CurlyParser.extend("ForeachParser", function(KLASS, OO){
|
|
1126
1126
|
var REGEX = Tokens.regex("<FOREACH><LBRACE><VAR> <IDENT>(?:**:**<IDENT>)? in (.*?)**<RBRACE>**{");
|
1127
1127
|
|
1128
1128
|
|
1129
|
-
OO.addMember("startParse", function(tokens){
|
1129
|
+
OO.addMember("startParse", function(tokens){var self=this;
|
1130
1130
|
var m = tokens.match(REGEX);
|
1131
1131
|
namespace = tokens.iterator++;
|
1132
1132
|
|
@@ -1143,7 +1143,7 @@ CurlyParser.extend("ForeachParser", function(KLASS, OO){
|
|
1143
1143
|
this.out = [ "for (var ", declare, ";", bool, ';', this.iterator + "++)" ];
|
1144
1144
|
});
|
1145
1145
|
|
1146
|
-
OO.addMember("endParse", function(tokens){
|
1146
|
+
OO.addMember("endParse", function(tokens){var self=this;
|
1147
1147
|
tokens.iterator--;
|
1148
1148
|
});
|
1149
1149
|
|
@@ -1160,14 +1160,14 @@ $m.Class.extend("CLI", function(KLASS, OO){
|
|
1160
1160
|
};
|
1161
1161
|
|
1162
1162
|
|
1163
|
-
OO.addMember("run", function(args){
|
1163
|
+
OO.addMember("run", function(args){var self=this;
|
1164
1164
|
var opts = this.parseOpts(args);
|
1165
1165
|
var options = opts[0];
|
1166
1166
|
var command = opts[1];
|
1167
1167
|
var files = opts[2];
|
1168
1168
|
});
|
1169
1169
|
|
1170
|
-
OO.addMember("parseOpts", function(args){
|
1170
|
+
OO.addMember("parseOpts", function(args){var self=this;
|
1171
1171
|
var files = [];
|
1172
1172
|
var options = {};
|
1173
1173
|
var command = null;
|
@@ -1,29 +1,8 @@
|
|
1
|
-
require 'tilt'
|
2
1
|
require 'sprockets'
|
3
|
-
require 'sprockets/engines'
|
4
2
|
|
5
|
-
|
6
|
-
class Engine < ::Rails::Engine
|
7
|
-
config.before_configuration {}
|
8
|
-
end
|
9
|
-
|
10
|
-
#
|
11
|
-
# Mochiscript template implementation. See:
|
12
|
-
# http://github.com/jeffsu/mochiscript
|
13
|
-
#
|
14
|
-
class MochiscriptTemplate < Tilt::Template
|
15
|
-
self.default_mime_type = 'application/javascript'
|
16
|
-
|
17
|
-
def prepare
|
18
|
-
@ctx = Mochiscript::Context.new
|
19
|
-
end
|
20
|
-
|
21
|
-
def evaluate(scope, locals, &block)
|
22
|
-
return @ctx.parse(data)
|
23
|
-
end
|
24
|
-
end
|
3
|
+
class Engine < ::Rails::Engine
|
25
4
|
end
|
26
5
|
|
27
6
|
module Sprockets
|
28
|
-
register_engine '.ms', Mochiscript::
|
7
|
+
register_engine '.ms', Mochiscript::Tilt::Template
|
29
8
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'tilt'
|
2
|
+
|
3
|
+
module Mochiscript::Tilt
|
4
|
+
class Template < Tilt::Template
|
5
|
+
self.default_mime_type = 'application/javascript'
|
6
|
+
|
7
|
+
def prepare
|
8
|
+
@ctx = Mochiscript::Context.new
|
9
|
+
end
|
10
|
+
|
11
|
+
def evaluate(scope, locals, &block)
|
12
|
+
return @ctx.parse(data)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
module Tilt
|
18
|
+
register Mochiscript::Tilt::Template, 'ms'
|
19
|
+
end
|
data/lib/mochiscript/version.rb
CHANGED
data/lib/mochiscript.rb
CHANGED
@@ -1,3 +1,10 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/mochiscript/version'
|
2
2
|
require File.dirname(__FILE__) + '/mochiscript/core'
|
3
|
-
|
3
|
+
|
4
|
+
if defined?(::Sinatra)
|
5
|
+
require File.dirname(__FILE__) + '/mochiscript/tilt/template'
|
6
|
+
require File.dirname(__FILE__) + '/mochiscript/sinatra/templates'
|
7
|
+
elsif defined?(::Rails)
|
8
|
+
require File.dirname(__FILE__) + '/mochiscript/tilt/template'
|
9
|
+
require File.dirname(__FILE__) + '/mochiscript/rails/engine'
|
10
|
+
end
|
@@ -225,11 +225,11 @@ window.$m = $m;
|
|
225
225
|
|
226
226
|
|
227
227
|
$m.Class.extend("JSML", function(KLASS, OO){
|
228
|
-
OO.addStaticMember("process", function(txt){
|
228
|
+
OO.addStaticMember("process", function(txt){var self=this;
|
229
229
|
return new $m.JSML(txt);
|
230
230
|
});
|
231
231
|
|
232
|
-
OO.addMember("initialize", function(txt){
|
232
|
+
OO.addMember("initialize", function(txt){var self=this;
|
233
233
|
var lines = txt.split(/\n/);
|
234
234
|
this.root = new $c.JSMLElement();
|
235
235
|
this.stack = [ this.root ];
|
@@ -249,11 +249,11 @@ $m.Class.extend("JSML", function(KLASS, OO){
|
|
249
249
|
};
|
250
250
|
});
|
251
251
|
|
252
|
-
OO.addMember("flatten", function(){
|
252
|
+
OO.addMember("flatten", function(){var self=this;
|
253
253
|
return this.root.flatten();
|
254
254
|
});
|
255
255
|
|
256
|
-
OO.addMember("processLine", function(line){
|
256
|
+
OO.addMember("processLine", function(line){var self=this;
|
257
257
|
if (line.match(/^\s*$/)) return;
|
258
258
|
|
259
259
|
var ele = new $m.JSMLElement(line);
|
@@ -277,11 +277,11 @@ $m.Class.extend("JSML", function(KLASS, OO){
|
|
277
277
|
});
|
278
278
|
|
279
279
|
|
280
|
-
OO.addMember("getScope", function(){
|
280
|
+
OO.addMember("getScope", function(){var self=this;
|
281
281
|
return this.stack.length - 1;
|
282
282
|
});
|
283
283
|
|
284
|
-
OO.addMember("getLast", function(){
|
284
|
+
OO.addMember("getLast", function(){var self=this;
|
285
285
|
return this.stack[this.stack.length-1];
|
286
286
|
});
|
287
287
|
|
@@ -295,7 +295,7 @@ $m.Class.extend("JSMLElement", function(KLASS, OO){
|
|
295
295
|
OO.addMember("SCOPE_OFFSET", 1);
|
296
296
|
OO.addMember("SELF_CLOSING", { area: null, basefont: null, br: null, hr: null, input: null, img: null, link: null, meta: null });
|
297
297
|
|
298
|
-
OO.addMember("initialize", function(line){
|
298
|
+
OO.addMember("initialize", function(line){var self=this;
|
299
299
|
this.children = [];
|
300
300
|
|
301
301
|
if (line == null) {
|
@@ -312,11 +312,11 @@ $m.Class.extend("JSMLElement", function(KLASS, OO){
|
|
312
312
|
this.parse(spaceMatch[2]);
|
313
313
|
});
|
314
314
|
|
315
|
-
OO.addMember("push", function(child){
|
315
|
+
OO.addMember("push", function(child){var self=this;
|
316
316
|
this.children.push(child);
|
317
317
|
});
|
318
318
|
|
319
|
-
OO.addMember("parse", function(line){
|
319
|
+
OO.addMember("parse", function(line){var self=this;
|
320
320
|
this.attributes;
|
321
321
|
this.line = line;
|
322
322
|
var self = this;
|
@@ -361,7 +361,7 @@ $m.Class.extend("JSMLElement", function(KLASS, OO){
|
|
361
361
|
}
|
362
362
|
});
|
363
363
|
|
364
|
-
OO.addMember("flatten", function(){
|
364
|
+
OO.addMember("flatten", function(){var self=this;
|
365
365
|
var out = [];
|
366
366
|
|
367
367
|
for (var i=0; i<this.children.length; i++) {
|
@@ -389,21 +389,21 @@ $m.Class.extend("JSMLElement", function(KLASS, OO){
|
|
389
389
|
return out;
|
390
390
|
});
|
391
391
|
|
392
|
-
OO.addMember("handleJsEQ", function(out){
|
392
|
+
OO.addMember("handleJsEQ", function(out){var self=this;
|
393
393
|
if (this.jsEQ) {
|
394
394
|
this.jsEQ = this.jsEQ.replace(/;\s*$/, '');
|
395
395
|
out.unshift('out.push(' + this.jsEQ + ');\n');
|
396
396
|
}
|
397
397
|
});
|
398
398
|
|
399
|
-
OO.addMember("handleContent", function(out){
|
399
|
+
OO.addMember("handleContent", function(out){var self=this;
|
400
400
|
if (this.content != null && this.content.length > 0) {
|
401
401
|
out.unshift('out.push(' + JSON.stringify(this.content) + ');\n');
|
402
402
|
}
|
403
403
|
});
|
404
404
|
|
405
405
|
|
406
|
-
OO.addMember("handleJsExec", function(out){
|
406
|
+
OO.addMember("handleJsExec", function(out){var self=this;
|
407
407
|
if (this.jsExec) {
|
408
408
|
out.unshift(this.jsExec);
|
409
409
|
if (this.jsExec.match(/\{\s*$/)) {
|
@@ -412,7 +412,7 @@ $m.Class.extend("JSMLElement", function(KLASS, OO){
|
|
412
412
|
}
|
413
413
|
});
|
414
414
|
|
415
|
-
OO.addStaticMember("parseAttributes", function(hash, classes, id){
|
415
|
+
OO.addStaticMember("parseAttributes", function(hash, classes, id){var self=this;
|
416
416
|
var out = [];
|
417
417
|
classes = classes || [];
|
418
418
|
if (hash['class']) classes.push(hash['class']);
|
metadata
CHANGED
@@ -1,87 +1,85 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: mochiscript
|
3
|
-
version: !ruby/object:Gem::Version
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.4.6.pre4
|
4
5
|
prerelease: 6
|
5
|
-
version: 0.4.6.pre3
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- Jeff Su
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2012-03-03 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
16
15
|
name: therubyracer
|
17
|
-
|
18
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: &70238662876240 !ruby/object:Gem::Requirement
|
19
17
|
none: false
|
20
|
-
requirements:
|
21
|
-
- -
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version:
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
24
22
|
type: :runtime
|
25
|
-
version_requirements: *id001
|
26
|
-
- !ruby/object:Gem::Dependency
|
27
|
-
name: json
|
28
23
|
prerelease: false
|
29
|
-
|
24
|
+
version_requirements: *70238662876240
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: json
|
27
|
+
requirement: &70238662874820 !ruby/object:Gem::Requirement
|
30
28
|
none: false
|
31
|
-
requirements:
|
32
|
-
- -
|
33
|
-
- !ruby/object:Gem::Version
|
34
|
-
version:
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
35
33
|
type: :runtime
|
36
|
-
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70238662874820
|
37
36
|
description: Javascript Dessert
|
38
|
-
email:
|
37
|
+
email:
|
39
38
|
- me@jeffsu.com
|
40
|
-
executables:
|
39
|
+
executables:
|
40
|
+
- ms-bootstrap
|
41
41
|
- ms-parse
|
42
42
|
- ms-run
|
43
43
|
extensions: []
|
44
|
-
|
45
44
|
extra_rdoc_files: []
|
46
|
-
|
47
|
-
files:
|
45
|
+
files:
|
48
46
|
- .gitignore
|
49
47
|
- Gemfile
|
50
48
|
- Rakefile
|
49
|
+
- bin/ms-bootstrap
|
51
50
|
- bin/ms-parse
|
52
51
|
- bin/ms-run
|
53
52
|
- lib/mochiscript.rb
|
54
53
|
- lib/mochiscript/core.rb
|
55
54
|
- lib/mochiscript/rails/engine.rb
|
55
|
+
- lib/mochiscript/sinatra/templates.rb
|
56
|
+
- lib/mochiscript/tilt/template.rb
|
56
57
|
- lib/mochiscript/version.rb
|
57
58
|
- mochiscript.gemspec
|
58
59
|
- vendor/assets/javascripts/mochiscript.js
|
59
|
-
homepage:
|
60
|
+
homepage: ''
|
60
61
|
licenses: []
|
61
|
-
|
62
62
|
post_install_message:
|
63
63
|
rdoc_options: []
|
64
|
-
|
65
|
-
require_paths:
|
64
|
+
require_paths:
|
66
65
|
- lib
|
67
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
66
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
68
67
|
none: false
|
69
|
-
requirements:
|
70
|
-
- -
|
71
|
-
- !ruby/object:Gem::Version
|
72
|
-
version:
|
73
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
68
|
+
requirements:
|
69
|
+
- - ! '>='
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
version: '0'
|
72
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
74
73
|
none: false
|
75
|
-
requirements:
|
76
|
-
- -
|
77
|
-
- !ruby/object:Gem::Version
|
74
|
+
requirements:
|
75
|
+
- - ! '>'
|
76
|
+
- !ruby/object:Gem::Version
|
78
77
|
version: 1.3.1
|
79
78
|
requirements: []
|
80
|
-
|
81
79
|
rubyforge_project: mochiscript
|
82
|
-
rubygems_version: 1.8.
|
80
|
+
rubygems_version: 1.8.10
|
83
81
|
signing_key:
|
84
82
|
specification_version: 3
|
85
83
|
summary: Javascript Dessert
|
86
84
|
test_files: []
|
87
|
-
|
85
|
+
has_rdoc:
|