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 +0 -3
- data/jader.gemspec +1 -1
- data/lib/jader/version.rb +1 -1
- data/spec/compiler_spec.rb +1 -1
- data/vendor/assets/javascripts/jade/jade.js +47 -14
- data/vendor/assets/javascripts/jade/runtime.js +1 -1
- metadata +6 -6
data/Gemfile
CHANGED
data/jader.gemspec
CHANGED
@@ -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'
|
data/lib/jader/version.rb
CHANGED
data/spec/compiler_spec.rb
CHANGED
@@ -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('
|
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.
|
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
|
1588
|
-
tok.buffer = flags
|
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(
|
1618
|
-
return
|
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(/(
|
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
|
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");
|
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.
|
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-
|
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:
|
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:
|
78
|
+
version: 0.10.2
|
79
79
|
- !ruby/object:Gem::Dependency
|
80
80
|
name: rspec
|
81
81
|
requirement: !ruby/object:Gem::Requirement
|