1 |
|
2 | /*!
|
3 | * Jade - utils
|
4 | * Copyright(c) 2010 TJ Holowaychuk <tj@vision-media.ca>
|
5 | * MIT Licensed
|
6 | */
|
7 |
|
8 | /**
|
9 | * Convert interpolation in the given string to JavaScript.
|
10 | *
|
11 | * @param {String} str
|
12 | * @return {String}
|
13 | * @api private
|
14 | */
|
15 |
|
16 | var interpolate = exports.interpolate = function(str){
|
17 | return str.replace(/(\\)?([#!]){(.*?)}/g, function(str, escape, flag, code){
|
18 | return escape
|
19 | ? str
|
20 | : "' + "
|
21 | + ('!' == flag ? '' : 'escape')
|
22 | + "((interp = " + code.replace(/\\'/g, "'")
|
23 | + ") == null ? '' : interp) + '";
|
24 | });
|
25 | };
|
26 |
|
27 | /**
|
28 | * Escape single quotes in `str`.
|
29 | *
|
30 | * @param {String} str
|
31 | * @return {String}
|
32 | * @api private
|
33 | */
|
34 |
|
35 | var escape = exports.escape = function(str) {
|
36 | return str.replace(/'/g, "\\'");
|
37 | };
|
38 |
|
39 | /**
|
40 | * Interpolate, and escape the given `str`.
|
41 | *
|
42 | * @param {String} str
|
43 | * @return {String}
|
44 | * @api private
|
45 | */
|
46 |
|
47 | exports.text = function(str){
|
48 | return interpolate(escape(str));
|
49 | }; |
\ | No newline at end of file |