jader 0.0.7 → 0.0.8

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/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