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 ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ BOOTSTRAP_JS = File.dirname(__FILE__) + '/../vendor/assets/javascripts/mochiscript.js'
4
+ puts File.read(BOOTSTRAP_JS)
@@ -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
- module Mochiscript::Rails
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::Rails::MochiscriptTemplate
7
+ register_engine '.ms', Mochiscript::Tilt::Template
29
8
  end
@@ -0,0 +1,8 @@
1
+ module Sinatra
2
+ module Templates
3
+ def mochiscript(template, options={}, locals={})
4
+ options.merge! :layout => false, :default_content_type => :js
5
+ render :ms, template, options, locals
6
+ end
7
+ end
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
@@ -1,3 +1,3 @@
1
1
  module Mochiscript
2
- VERSION = "0.4.6.pre3"
2
+ VERSION = "0.4.6.pre4"
3
3
  end
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
- require File.dirname(__FILE__) + '/mochiscript/rails/engine' if defined?(::Rails)
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
- date: 2012-02-29 00:00:00 Z
14
- dependencies:
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
- prerelease: false
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: "0"
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
- requirement: &id002 !ruby/object:Gem::Requirement
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: "0"
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
35
33
  type: :runtime
36
- version_requirements: *id002
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: "0"
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.11
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: