jade-js-source 0.17.0 → 0.19.0
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/lib/jade_js/jade.js +77 -12
- metadata +3 -5
data/lib/jade_js/jade.js
CHANGED
@@ -714,7 +714,7 @@ var Parser = require('./parser')
|
|
714
714
|
* Library version.
|
715
715
|
*/
|
716
716
|
|
717
|
-
exports.version = '0.
|
717
|
+
exports.version = '0.19.0';
|
718
718
|
|
719
719
|
/**
|
720
720
|
* Expose self closing tags.
|
@@ -913,12 +913,15 @@ exports.renderFile = function(path, options, fn){
|
|
913
913
|
fn = options, options = {};
|
914
914
|
}
|
915
915
|
|
916
|
-
|
917
|
-
|
918
|
-
|
919
|
-
|
920
|
-
|
921
|
-
|
916
|
+
try {
|
917
|
+
options.filename = path;
|
918
|
+
var str = options.cache
|
919
|
+
? exports.cache[key] || (exports.cache[key] = fs.readFileSync(path, 'utf8'))
|
920
|
+
: fs.readFileSync(path, 'utf8');
|
921
|
+
exports.render(str, options, fn);
|
922
|
+
} catch (err) {
|
923
|
+
fn(err);
|
924
|
+
}
|
922
925
|
};
|
923
926
|
|
924
927
|
/**
|
@@ -1179,12 +1182,52 @@ Lexer.prototype = {
|
|
1179
1182
|
return this.scan(/^extends +([^\n]+)/, 'extends');
|
1180
1183
|
},
|
1181
1184
|
|
1185
|
+
/**
|
1186
|
+
* Block prepend.
|
1187
|
+
*/
|
1188
|
+
|
1189
|
+
prepend: function() {
|
1190
|
+
var captures;
|
1191
|
+
if (captures = /^prepend +([^\n]+)/.exec(this.input)) {
|
1192
|
+
this.consume(captures[0].length);
|
1193
|
+
var mode = 'prepend'
|
1194
|
+
, name = captures[1]
|
1195
|
+
, tok = this.tok('block', name);
|
1196
|
+
tok.mode = mode;
|
1197
|
+
return tok;
|
1198
|
+
}
|
1199
|
+
},
|
1200
|
+
|
1201
|
+
/**
|
1202
|
+
* Block append.
|
1203
|
+
*/
|
1204
|
+
|
1205
|
+
append: function() {
|
1206
|
+
var captures;
|
1207
|
+
if (captures = /^append +([^\n]+)/.exec(this.input)) {
|
1208
|
+
this.consume(captures[0].length);
|
1209
|
+
var mode = 'append'
|
1210
|
+
, name = captures[1]
|
1211
|
+
, tok = this.tok('block', name);
|
1212
|
+
tok.mode = mode;
|
1213
|
+
return tok;
|
1214
|
+
}
|
1215
|
+
},
|
1216
|
+
|
1182
1217
|
/**
|
1183
1218
|
* Block.
|
1184
1219
|
*/
|
1185
1220
|
|
1186
1221
|
block: function() {
|
1187
|
-
|
1222
|
+
var captures;
|
1223
|
+
if (captures = /^block +(?:(prepend|append) +)?([^\n]+)/.exec(this.input)) {
|
1224
|
+
this.consume(captures[0].length);
|
1225
|
+
var mode = captures[1] || 'replace'
|
1226
|
+
, name = captures[2]
|
1227
|
+
, tok = this.tok('block', name);
|
1228
|
+
tok.mode = mode;
|
1229
|
+
return tok;
|
1230
|
+
}
|
1188
1231
|
},
|
1189
1232
|
|
1190
1233
|
/**
|
@@ -1566,6 +1609,8 @@ Lexer.prototype = {
|
|
1566
1609
|
|| this.when()
|
1567
1610
|
|| this.default()
|
1568
1611
|
|| this.extends()
|
1612
|
+
|| this.append()
|
1613
|
+
|| this.prepend()
|
1569
1614
|
|| this.block()
|
1570
1615
|
|| this.include()
|
1571
1616
|
|| this.mixin()
|
@@ -2259,7 +2304,7 @@ var Parser = exports = module.exports = function Parser(str, filename, options){
|
|
2259
2304
|
* Tags that may not contain tags.
|
2260
2305
|
*/
|
2261
2306
|
|
2262
|
-
var textOnly = exports.textOnly = ['
|
2307
|
+
var textOnly = exports.textOnly = ['script', 'style'];
|
2263
2308
|
|
2264
2309
|
/**
|
2265
2310
|
* Parser prototype.
|
@@ -2632,11 +2677,31 @@ Parser.prototype = {
|
|
2632
2677
|
*/
|
2633
2678
|
|
2634
2679
|
parseBlock: function(){
|
2635
|
-
var
|
2636
|
-
|
2680
|
+
var block = this.expect('block')
|
2681
|
+
, mode = block.mode
|
2682
|
+
, name = block.val.trim();
|
2683
|
+
|
2684
|
+
block = 'indent' == this.peek().type
|
2637
2685
|
? this.block()
|
2638
2686
|
: new nodes.Block(new nodes.Literal(''));
|
2639
|
-
|
2687
|
+
|
2688
|
+
var prev = this.blocks[name];
|
2689
|
+
|
2690
|
+
if (prev) {
|
2691
|
+
switch (prev.mode) {
|
2692
|
+
case 'append':
|
2693
|
+
block.nodes = block.nodes.concat(prev.nodes);
|
2694
|
+
prev = block;
|
2695
|
+
break;
|
2696
|
+
case 'prepend':
|
2697
|
+
block.nodes = prev.nodes.concat(block.nodes);
|
2698
|
+
prev = block;
|
2699
|
+
break;
|
2700
|
+
}
|
2701
|
+
}
|
2702
|
+
|
2703
|
+
block.mode = mode;
|
2704
|
+
return this.blocks[name] = prev || block;
|
2640
2705
|
},
|
2641
2706
|
|
2642
2707
|
/**
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jade-js-source
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.19.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,8 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2011-
|
14
|
-
default_executable:
|
13
|
+
date: 2011-12-06 00:00:00.000000000Z
|
15
14
|
dependencies: []
|
16
15
|
description: ! " Jade is a high performance template engine heavily influenced
|
17
16
|
by Haml \n and implemented with JavaScript for node.\n"
|
@@ -23,7 +22,6 @@ files:
|
|
23
22
|
- lib/jade_js/jade.js
|
24
23
|
- lib/jade_js/runtime.js
|
25
24
|
- lib/jade_js/source.rb
|
26
|
-
has_rdoc: true
|
27
25
|
homepage: https://github.com/visionmedia/jade
|
28
26
|
licenses: []
|
29
27
|
post_install_message:
|
@@ -44,7 +42,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
44
42
|
version: '0'
|
45
43
|
requirements: []
|
46
44
|
rubyforge_project: jade-js-source
|
47
|
-
rubygems_version: 1.
|
45
|
+
rubygems_version: 1.8.12
|
48
46
|
signing_key:
|
49
47
|
specification_version: 3
|
50
48
|
summary: Jade - template engine
|