mochiscript 0.4.6.pre3 → 0.4.6.pre4
Sign up to get free protection for your applications and to get access to all the features.
- 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:
|