jader 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -2,10 +2,7 @@ source "http://rubygems.org"
2
2
 
3
3
  # Specify your gem's dependencies in jade.gemspec
4
4
  gemspec
5
- gem 'therubyracer', :platform => :ruby
6
5
 
7
6
  group :test do
8
- gem 'johnson', :platform => :mri_18
9
- gem 'therubyrhino', :platform => :jruby
10
7
  gem 'sqlite3'
11
8
  end
@@ -21,7 +21,7 @@ Gem::Specification.new do |s|
21
21
  s.add_dependency 'libv8'
22
22
  s.add_dependency 'tilt'
23
23
  s.add_dependency 'sprockets'
24
- s.add_dependency 'therubyracer'
24
+ s.add_dependency 'therubyracer', "~> 0.10.2"
25
25
  s.add_development_dependency 'rspec'
26
26
  s.add_development_dependency 'rspec-rails'
27
27
  s.add_development_dependency 'rails', '>= 3.1'
@@ -1,3 +1,3 @@
1
1
  module Jader
2
- VERSION = "0.0.7"
2
+ VERSION = "0.0.8"
3
3
  end
@@ -19,7 +19,7 @@ describe Jader::Compiler do
19
19
  end
20
20
 
21
21
  it "should define Jade.JS compiler version" do
22
- @compiler.jade_version.should == "0.27.2"
22
+ @compiler.jade_version.should == "0.27.6"
23
23
  end
24
24
 
25
25
  it "should compile small thing" do
@@ -483,8 +483,9 @@ Compiler.prototype = {
483
483
  */
484
484
 
485
485
  visitText: function(text){
486
- text = utils.text(text.val.replace(/\\/g, '\\\\'));
486
+ text = utils.text(text.val.replace(/\\/g, '_SLASH_'));
487
487
  if (this.escape) text = escape(text);
488
+ text = text.replace(/_SLASH_/g, '\\\\');
488
489
  this.buffer(text);
489
490
  },
490
491
 
@@ -587,7 +588,9 @@ Compiler.prototype = {
587
588
 
588
589
  this.buf.push(''
589
590
  + ' } else {\n'
591
+ + ' var $$l = 0;\n'
590
592
  + ' for (var ' + each.key + ' in ' + each.obj + ') {\n'
593
+ + ' $$l++;'
591
594
  + ' if (' + each.obj + '.hasOwnProperty(' + each.key + ')){'
592
595
  + ' var ' + each.val + ' = ' + each.obj + '[' + each.key + '];\n');
593
596
 
@@ -595,7 +598,13 @@ Compiler.prototype = {
595
598
 
596
599
  this.buf.push(' }\n');
597
600
 
598
- this.buf.push(' }\n }\n}).call(this);\n');
601
+ this.buf.push(' }\n');
602
+ if (each.alternative) {
603
+ this.buf.push(' if ($$l === 0) {');
604
+ this.visit(each.alternative);
605
+ this.buf.push(' }');
606
+ }
607
+ this.buf.push(' }\n}).call(this);\n');
599
608
  },
600
609
 
601
610
  /**
@@ -813,7 +822,6 @@ module.exports = {
813
822
  */
814
823
 
815
824
  coffeescript: function(str){
816
- str = str.replace(/\\n/g, '\n');
817
825
  var js = require('coffee-script').compile(str).replace(/\\/g, '\\\\').replace(/\n/g, '\\n');
818
826
  return '<script type="text/javascript">\\n' + js + '</script>';
819
827
  }
@@ -872,7 +880,7 @@ var Parser = require('./parser')
872
880
  * Library version.
873
881
  */
874
882
 
875
- exports.version = '0.27.2';
883
+ exports.version = '0.27.6';
876
884
 
877
885
  /**
878
886
  * Expose self closing tags.
@@ -1107,7 +1115,6 @@ exports.__express = exports.renderFile;
1107
1115
  }); // module: jade.js
1108
1116
 
1109
1117
  require.register("lexer.js", function(module, exports, require){
1110
-
1111
1118
  /*!
1112
1119
  * Jade - Lexer
1113
1120
  * Copyright(c) 2010 TJ Holowaychuk <tj@vision-media.ca>
@@ -1284,6 +1291,8 @@ Lexer.prototype = {
1284
1291
  var captures;
1285
1292
  if (captures = /^\n *\n/.exec(this.input)) {
1286
1293
  this.consume(captures[0].length - 1);
1294
+
1295
+ ++this.lineno;
1287
1296
  if (this.pipeless) return this.tok('text', '');
1288
1297
  return this.next();
1289
1298
  }
@@ -1584,8 +1593,8 @@ Lexer.prototype = {
1584
1593
  var flags = captures[1];
1585
1594
  captures[1] = captures[2];
1586
1595
  var tok = this.tok('code', captures[1]);
1587
- tok.escape = flags[0] === '=';
1588
- tok.buffer = flags[0] === '=' || flags[1] === '=';
1596
+ tok.escape = flags.charAt(0) === '=';
1597
+ tok.buffer = flags.charAt(0) === '=' || flags.charAt(1) === '=';
1589
1598
  return tok;
1590
1599
  }
1591
1600
  },
@@ -1614,8 +1623,10 @@ Lexer.prototype = {
1614
1623
  }
1615
1624
 
1616
1625
  function interpolate(attr) {
1617
- return attr.replace(/#\{([^}]+)\}/g, function(_, expr){
1618
- return quote + " + (" + expr + ") + " + quote;
1626
+ return attr.replace(/(\\)?#\{([^}]+)\}/g, function(_, escape, expr){
1627
+ return escape
1628
+ ? _
1629
+ : quote + " + (" + expr + ") + " + quote;
1619
1630
  });
1620
1631
  }
1621
1632
 
@@ -2108,6 +2119,7 @@ Block.prototype.includeBlock = function(){
2108
2119
  else if (node.textOnly) continue;
2109
2120
  else if (node.includeBlock) ret = node.includeBlock();
2110
2121
  else if (node.block && !node.block.isEmpty()) ret = node.block.includeBlock();
2122
+ if (ret.yield) return ret;
2111
2123
  }
2112
2124
 
2113
2125
  return ret;
@@ -2660,7 +2672,8 @@ require.register("parser.js", function(module, exports, require){
2660
2672
  */
2661
2673
 
2662
2674
  var Lexer = require('./lexer')
2663
- , nodes = require('./nodes');
2675
+ , nodes = require('./nodes')
2676
+ , utils = require('./utils');
2664
2677
 
2665
2678
  /**
2666
2679
  * Initialize `Parser` with the given input `str` and `filename`.
@@ -3135,7 +3148,7 @@ Parser.prototype = {
3135
3148
  var path = join(dir, path)
3136
3149
  , str = fs.readFileSync(path, 'utf8')
3137
3150
  , parser = new Parser(str, path, this.options);
3138
- parser.blocks = this.blocks;
3151
+ parser.blocks = utils.merge({}, this.blocks);
3139
3152
  parser.mixins = this.mixins;
3140
3153
 
3141
3154
  this.context(parser);
@@ -3582,12 +3595,16 @@ require.register("utils.js", function(module, exports, require){
3582
3595
  */
3583
3596
 
3584
3597
  var interpolate = exports.interpolate = function(str){
3585
- return str.replace(/(\\)?([#!]){(.*?)}/g, function(str, escape, flag, code){
3598
+ return str.replace(/(_SLASH_)?([#!]){(.*?)}/g, function(str, escape, flag, code){
3599
+ code = code
3600
+ .replace(/\\'/g, "'")
3601
+ .replace(/_SLASH_/g, '\\');
3602
+
3586
3603
  return escape
3587
- ? str
3604
+ ? str.slice(7)
3588
3605
  : "' + "
3589
3606
  + ('!' == flag ? '' : 'escape')
3590
- + "((interp = " + code.replace(/\\'/g, "'")
3607
+ + "((interp = " + code
3591
3608
  + ") == null ? '' : interp) + '";
3592
3609
  });
3593
3610
  };
@@ -3615,6 +3632,22 @@ var escape = exports.escape = function(str) {
3615
3632
  exports.text = function(str){
3616
3633
  return interpolate(escape(str));
3617
3634
  };
3635
+
3636
+ /**
3637
+ * Merge `b` into `a`.
3638
+ *
3639
+ * @param {Object} a
3640
+ * @param {Object} b
3641
+ * @return {Object}
3642
+ * @api public
3643
+ */
3644
+
3645
+ exports.merge = function(a, b) {
3646
+ for (var key in b) a[key] = b[key];
3647
+ return a;
3648
+ };
3649
+
3650
+
3618
3651
  }); // module: utils.js
3619
3652
 
3620
3653
  window.jade = require("jade");
@@ -176,4 +176,4 @@ exports.rethrow = function rethrow(err, filename, lineno){
176
176
 
177
177
  return exports;
178
178
 
179
- })({});
179
+ })({});
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jader
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-10-01 00:00:00.000000000 Z
13
+ date: 2012-11-09 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: libv8
@@ -65,17 +65,17 @@ dependencies:
65
65
  requirement: !ruby/object:Gem::Requirement
66
66
  none: false
67
67
  requirements:
68
- - - ! '>='
68
+ - - ~>
69
69
  - !ruby/object:Gem::Version
70
- version: '0'
70
+ version: 0.10.2
71
71
  type: :runtime
72
72
  prerelease: false
73
73
  version_requirements: !ruby/object:Gem::Requirement
74
74
  none: false
75
75
  requirements:
76
- - - ! '>='
76
+ - - ~>
77
77
  - !ruby/object:Gem::Version
78
- version: '0'
78
+ version: 0.10.2
79
79
  - !ruby/object:Gem::Dependency
80
80
  name: rspec
81
81
  requirement: !ruby/object:Gem::Requirement