mochiscript 0.4.0.pre12 → 0.4.0.pre13

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,7 +2,6 @@ require 'v8'
2
2
  require 'json'
3
3
 
4
4
  module Mochiscript
5
- VERSION = "0.4.0-pre12".sub("-", '.')
6
5
  class Context
7
6
  def initialize
8
7
  @ctx = V8::Context.new
@@ -18,6 +17,10 @@ module Mochiscript
18
17
  @ctx.eval_js("$m.toJSON(#{str.to_json})")
19
18
  end
20
19
 
20
+ def pp(str)
21
+ return @ctx.eval_js("$m.pp(#{str.to_json})")
22
+ end
23
+
21
24
  def eval_ms(str)
22
25
  @ctx.eval_js(parse(str))
23
26
  end
@@ -151,6 +154,7 @@ var JS2 = $m;
151
154
  $m.Class.extend = function(name, klassDef) {
152
155
  var klass = function() { if (!noInit) this.initialize.apply(this, arguments); };
153
156
  klass.OO = new OO(klass, this);
157
+ if (klassDef) klass.name = name;
154
158
 
155
159
  if (typeof name != 'string') {
156
160
  klassDef = name;
@@ -336,8 +340,16 @@ JS2.Class.extend('Tokens', function(KLASS, OO){
336
340
  });
337
341
 
338
342
  OO.addMember("lookback",function (n) {
339
- var starting = this.consumed;
340
- while (this.orig.charAt(starting).match(/\s/)) starting--;
343
+ var starting = this.consumed - 1;
344
+
345
+ //$m.outs(JSON.stringify(this.orig.substr(starting-10, 10)));
346
+ //$m.outs(JSON.stringify(this.orig.charAt(starting)));
347
+ while (this.orig.charAt(starting).match(/\s/)) {
348
+ //$m.outs("back");
349
+ starting--;
350
+ }
351
+
352
+ //$m.outs(n + "= " + JSON.stringify(this.orig.substr(starting-n, n)));
341
353
  return this.orig.substr(starting-n, n);
342
354
  });
343
355
 
@@ -371,6 +383,13 @@ $m.toJSON = function (str) {
371
383
  return parser.toJSON();
372
384
  };
373
385
 
386
+ $m.pp = function (str) {
387
+ var parser = new $c.RootParser();
388
+ parser.parse(new $c.Tokens(str));
389
+ return parser.pp();
390
+ };
391
+
392
+
374
393
 
375
394
  JS2.Class.extend('RootParser', function(KLASS, OO){
376
395
  OO.addMember("handlers",{});
@@ -399,6 +418,7 @@ JS2.Class.extend('RootParser', function(KLASS, OO){
399
418
  var handlerClass = this.getHandler(token) || token[2];
400
419
  if (handlerClass) {
401
420
  var handler = new $c[handlerClass];
421
+ handler._TYPE = handlerClass;
402
422
  if (handler.parse(tokens) !== false) {
403
423
  this.out.push(handler);
404
424
  tokens.lastHandler = handler;
@@ -442,6 +462,32 @@ JS2.Class.extend('RootParser', function(KLASS, OO){
442
462
  return JSON.stringify(this.toStruct());
443
463
  });
444
464
 
465
+ OO.addMember("pp",function (space) {
466
+ space = space == null ? " " : space + " ";
467
+
468
+ var ret = [ space + (this._TYPE || 'NODE') ];
469
+ var generic = [];
470
+ for(var _i1=0,_c1=this.out,_l1=_c1.length,ele;(ele=_c1[_i1])||(_i1<_l1);_i1++){
471
+ if (ele.pp) {
472
+ if (generic.length) {
473
+ ret.push(space + " TOKENS:" + JSON.stringify(generic.join('')));
474
+ generic = [];
475
+ }
476
+ ret.push(ele.pp(space));
477
+ }
478
+
479
+ else {
480
+ generic.push(ele);
481
+ }
482
+ }
483
+
484
+ if (generic.length) {
485
+ ret.push(space + " TOKENS:" + JSON.stringify(generic.join('')));
486
+ }
487
+
488
+ return ret.join("\n");
489
+ });
490
+
445
491
  OO.addMember("toStruct",function () {
446
492
  var ret = [];
447
493
  for(var _i1=0,_c1=this.out,_l1=_c1.length,ele;(ele=_c1[_i1])||(_i1<_l1);_i1++){
@@ -508,6 +554,8 @@ RootParser.extend('ModuleParser', function(KLASS, OO){
508
554
  });
509
555
 
510
556
  RootParser.extend('CurlyParser', function(KLASS, OO){
557
+ OO.addMember("_TYPE",'CurlyParser');
558
+
511
559
  OO.addMember("initialize",function (chop) {
512
560
  this.chop = chop;
513
561
  this.$super();
@@ -789,6 +837,7 @@ RootParser.extend('RegexParser', function(KLASS, OO){
789
837
  var back = tokens.lookback(2);
790
838
 
791
839
  if (back.match(DIVIDE)) {
840
+ this._TYPE = 'DIVIDE';
792
841
  tokens.consume(1);
793
842
  this.out.push("/");
794
843
  }
@@ -808,6 +857,8 @@ RootParser.extend('RegexParser', function(KLASS, OO){
808
857
  });
809
858
 
810
859
  CurlyParser.extend('ForeachParser', function(KLASS, OO){
860
+ OO.addMember("_TYPE",'Foreach');
861
+
811
862
  // private closure
812
863
 
813
864
  var REGEX = Tokens.regex("<FOREACH><LBRACE><VAR> <IDENT>(?:**:**<IDENT>)? in (.*?)**<RBRACE>**{");
data/lib/mochiscript.rb CHANGED
@@ -1,2 +1,7 @@
1
+ module Mochiscript
2
+ VERSION = "0.4.0-pre13".sub("-", '.')
3
+ end
4
+
1
5
  require File.dirname(__FILE__) + '/mochiscript/core'
2
6
  require File.dirname(__FILE__) + '/mochiscript/rails/engine' if defined?(::Rails)
7
+
@@ -117,6 +117,7 @@ window.$m = $m;
117
117
  $m.Class.extend = function(name, klassDef) {
118
118
  var klass = function() { if (!noInit) this.initialize.apply(this, arguments); };
119
119
  klass.OO = new OO(klass, this);
120
+ if (klassDef) klass.name = name;
120
121
 
121
122
  if (typeof name != 'string') {
122
123
  klassDef = name;
metadata CHANGED
@@ -1,45 +1,49 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: mochiscript
3
- version: !ruby/object:Gem::Version
4
- version: 0.4.0.pre12
3
+ version: !ruby/object:Gem::Version
5
4
  prerelease: 6
5
+ version: 0.4.0.pre13
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Jeff Su
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-10-31 00:00:00.000000000Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
12
+
13
+ date: 2011-11-01 00:00:00 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
15
16
  name: therubyracer
16
- requirement: &70230521509580 !ruby/object:Gem::Requirement
17
+ prerelease: false
18
+ requirement: &id001 !ruby/object:Gem::Requirement
17
19
  none: false
18
- requirements:
19
- - - ! '>='
20
- - !ruby/object:Gem::Version
21
- version: '0'
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
22
24
  type: :runtime
23
- prerelease: false
24
- version_requirements: *70230521509580
25
- - !ruby/object:Gem::Dependency
25
+ version_requirements: *id001
26
+ - !ruby/object:Gem::Dependency
26
27
  name: json
27
- requirement: &70230521508960 !ruby/object:Gem::Requirement
28
+ prerelease: false
29
+ requirement: &id002 !ruby/object:Gem::Requirement
28
30
  none: false
29
- requirements:
30
- - - ! '>='
31
- - !ruby/object:Gem::Version
32
- version: '0'
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: "0"
33
35
  type: :runtime
34
- prerelease: false
35
- version_requirements: *70230521508960
36
+ version_requirements: *id002
36
37
  description: Javascript Dessert
37
- email:
38
+ email:
38
39
  - me@jeffsu.com
39
40
  executables: []
41
+
40
42
  extensions: []
43
+
41
44
  extra_rdoc_files: []
42
- files:
45
+
46
+ files:
43
47
  - .gitignore
44
48
  - Gemfile
45
49
  - Rakefile
@@ -48,28 +52,32 @@ files:
48
52
  - lib/mochiscript/rails/engine.rb
49
53
  - mochiscript.gemspec
50
54
  - vendor/assets/javascripts/mochiscript.js
51
- homepage: ''
55
+ homepage: ""
52
56
  licenses: []
57
+
53
58
  post_install_message:
54
59
  rdoc_options: []
55
- require_paths:
60
+
61
+ require_paths:
56
62
  - lib
57
- required_ruby_version: !ruby/object:Gem::Requirement
63
+ required_ruby_version: !ruby/object:Gem::Requirement
58
64
  none: false
59
- requirements:
60
- - - ! '>='
61
- - !ruby/object:Gem::Version
62
- version: '0'
63
- required_rubygems_version: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: "0"
69
+ required_rubygems_version: !ruby/object:Gem::Requirement
64
70
  none: false
65
- requirements:
66
- - - ! '>'
67
- - !ruby/object:Gem::Version
71
+ requirements:
72
+ - - ">"
73
+ - !ruby/object:Gem::Version
68
74
  version: 1.3.1
69
75
  requirements: []
76
+
70
77
  rubyforge_project: mochiscript
71
- rubygems_version: 1.8.10
78
+ rubygems_version: 1.8.9
72
79
  signing_key:
73
80
  specification_version: 3
74
81
  summary: Javascript Dessert
75
82
  test_files: []
83
+