mochiscript 0.4.0.pre12 → 0.4.0.pre13

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.
@@ -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
+