jade-rails 1.10.0.0 → 1.11.0.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.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/lib/jade/version.rb +1 -1
- data/vendor/assets/javascripts/jade/jade.js +856 -100
- data/vendor/assets/javascripts/jade/runtime.js +15 -6
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ea5675355be3294f2c41a542b0903f7dce8a2892
|
4
|
+
data.tar.gz: 06585d018f271cbeb6b721c29053232699898ff5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 33a213e6b54f6b6e70f914c4e40c0849cc05e937ad6e980e5b52ec27b213666d147de6212e942da5a62b316933cdf9ee77653ecb76a82f9c9f3297c4f9b61e56
|
7
|
+
data.tar.gz: 26a32286e9e082a316de221e17d918fc1134cc3ca013983ca86f6f0a8f9346591c096dc7691dca8d1d3692a074c50173a0e90f72cb695e06ef332a8a1119d5ed
|
data/README.md
CHANGED
@@ -11,7 +11,7 @@ to render Jade templates anywhere on the front end of your Rails app.
|
|
11
11
|
Add to your Gemfile:
|
12
12
|
|
13
13
|
```ruby
|
14
|
-
gem 'jade-rails', '~> 1.
|
14
|
+
gem 'jade-rails', '~> 1.11.0.0'
|
15
15
|
```
|
16
16
|
|
17
17
|
In your `application.js`, require the Jade runtime before any files that include
|
data/lib/jade/version.rb
CHANGED
@@ -827,7 +827,9 @@ Compiler.prototype = {
|
|
827
827
|
if (args.length && /^\.\.\./.test(args[args.length - 1].trim())) {
|
828
828
|
rest = args.pop().trim().replace(/^\.\.\./, '');
|
829
829
|
}
|
830
|
-
|
830
|
+
// we need use jade_interp here for v8: https://code.google.com/p/v8/issues/detail?id=4165
|
831
|
+
// once fixed, use this: this.buf.push(name + ' = function(' + args.join(',') + '){');
|
832
|
+
this.buf.push(name + ' = jade_interp = function(' + args.join(',') + '){');
|
831
833
|
this.buf.push('var block = (this && this.block), attributes = (this && this.attributes) || {};');
|
832
834
|
if (rest) {
|
833
835
|
this.buf.push('var ' + rest + ' = [];');
|
@@ -1781,6 +1783,21 @@ Lexer.prototype = {
|
|
1781
1783
|
}
|
1782
1784
|
},
|
1783
1785
|
|
1786
|
+
|
1787
|
+
/**
|
1788
|
+
* Block code.
|
1789
|
+
*/
|
1790
|
+
|
1791
|
+
blockCode: function() {
|
1792
|
+
var captures;
|
1793
|
+
if (captures = /^-\n/.exec(this.input)) {
|
1794
|
+
this.consume(captures[0].length - 1);
|
1795
|
+
var tok = this.tok('blockCode');
|
1796
|
+
this.pipeless = true;
|
1797
|
+
return tok;
|
1798
|
+
}
|
1799
|
+
},
|
1800
|
+
|
1784
1801
|
/**
|
1785
1802
|
* Attributes.
|
1786
1803
|
*/
|
@@ -2040,6 +2057,7 @@ Lexer.prototype = {
|
|
2040
2057
|
if (isMatch) {
|
2041
2058
|
// consume test along with `\n` prefix if match
|
2042
2059
|
this.consume(str.length + 1);
|
2060
|
+
++this.lineno;
|
2043
2061
|
tokens.push(str.substr(indent.length));
|
2044
2062
|
}
|
2045
2063
|
} while(this.input.length && isMatch);
|
@@ -2111,6 +2129,7 @@ Lexer.prototype = {
|
|
2111
2129
|
|| this["while"]()
|
2112
2130
|
|| this.tag()
|
2113
2131
|
|| this.filter()
|
2132
|
+
|| this.blockCode()
|
2114
2133
|
|| this.code()
|
2115
2134
|
|| this.id()
|
2116
2135
|
|| this.className()
|
@@ -2982,6 +3001,8 @@ Parser.prototype = {
|
|
2982
3001
|
return this.parseEach();
|
2983
3002
|
case 'code':
|
2984
3003
|
return this.parseCode();
|
3004
|
+
case 'blockCode':
|
3005
|
+
return this.parseBlockCode();
|
2985
3006
|
case 'call':
|
2986
3007
|
return this.parseCall();
|
2987
3008
|
case 'interpolation':
|
@@ -3125,6 +3146,25 @@ Parser.prototype = {
|
|
3125
3146
|
return node;
|
3126
3147
|
},
|
3127
3148
|
|
3149
|
+
/**
|
3150
|
+
* block code
|
3151
|
+
*/
|
3152
|
+
|
3153
|
+
parseBlockCode: function(){
|
3154
|
+
var tok = this.expect('blockCode');
|
3155
|
+
var node;
|
3156
|
+
var body = this.peek();
|
3157
|
+
var text;
|
3158
|
+
if (body.type === 'pipeless-text') {
|
3159
|
+
this.advance();
|
3160
|
+
text = body.val.join('\n');
|
3161
|
+
} else {
|
3162
|
+
text = '';
|
3163
|
+
}
|
3164
|
+
node = new nodes.Code(text, false, false);
|
3165
|
+
return node;
|
3166
|
+
},
|
3167
|
+
|
3128
3168
|
/**
|
3129
3169
|
* comment
|
3130
3170
|
*/
|
@@ -3755,12 +3795,21 @@ exports.attrs = function attrs(obj, terse){
|
|
3755
3795
|
* @api private
|
3756
3796
|
*/
|
3757
3797
|
|
3758
|
-
|
3759
|
-
|
3760
|
-
|
3761
|
-
|
3762
|
-
|
3763
|
-
|
3798
|
+
var jade_encode_html_rules = {
|
3799
|
+
'&': '&',
|
3800
|
+
'<': '<',
|
3801
|
+
'>': '>',
|
3802
|
+
'"': '"'
|
3803
|
+
};
|
3804
|
+
var jade_match_html = /[&<>"]/g;
|
3805
|
+
|
3806
|
+
function jade_encode_char(c) {
|
3807
|
+
return jade_encode_html_rules[c] || c;
|
3808
|
+
}
|
3809
|
+
|
3810
|
+
exports.escape = jade_escape;
|
3811
|
+
function jade_escape(html){
|
3812
|
+
var result = String(html).replace(jade_match_html, jade_encode_char);
|
3764
3813
|
if (result === '' + html) return html;
|
3765
3814
|
else return result;
|
3766
3815
|
};
|
@@ -4148,7 +4197,7 @@ process.nextTick = function (fun) {
|
|
4148
4197
|
}
|
4149
4198
|
}
|
4150
4199
|
queue.push(new Item(fun, args));
|
4151
|
-
if (!draining) {
|
4200
|
+
if (queue.length === 1 && !draining) {
|
4152
4201
|
setTimeout(drainQueue, 0);
|
4153
4202
|
}
|
4154
4203
|
};
|
@@ -4718,7 +4767,7 @@ var _whitespace = _dereq_("./whitespace");
|
|
4718
4767
|
exports.isNewLine = _whitespace.isNewLine;
|
4719
4768
|
exports.lineBreak = _whitespace.lineBreak;
|
4720
4769
|
exports.lineBreakG = _whitespace.lineBreakG;
|
4721
|
-
var version = "1.
|
4770
|
+
var version = "1.2.2";exports.version = version;
|
4722
4771
|
|
4723
4772
|
function parse(input, options) {
|
4724
4773
|
var p = parser(options, input);
|
@@ -4742,7 +4791,689 @@ function parser(options, input) {
|
|
4742
4791
|
return new Parser(getOptions(options), String(input));
|
4743
4792
|
}
|
4744
4793
|
|
4745
|
-
},{"./expression":
|
4794
|
+
},{"./expression":6,"./identifier":7,"./location":8,"./lval":9,"./node":10,"./options":11,"./parseutil":12,"./state":13,"./statement":14,"./tokencontext":15,"./tokenize":16,"./tokentype":17,"./whitespace":19}],2:[function(_dereq_,module,exports){
|
4795
|
+
if (typeof Object.create === 'function') {
|
4796
|
+
// implementation from standard node.js 'util' module
|
4797
|
+
module.exports = function inherits(ctor, superCtor) {
|
4798
|
+
ctor.super_ = superCtor
|
4799
|
+
ctor.prototype = Object.create(superCtor.prototype, {
|
4800
|
+
constructor: {
|
4801
|
+
value: ctor,
|
4802
|
+
enumerable: false,
|
4803
|
+
writable: true,
|
4804
|
+
configurable: true
|
4805
|
+
}
|
4806
|
+
});
|
4807
|
+
};
|
4808
|
+
} else {
|
4809
|
+
// old school shim for old browsers
|
4810
|
+
module.exports = function inherits(ctor, superCtor) {
|
4811
|
+
ctor.super_ = superCtor
|
4812
|
+
var TempCtor = function () {}
|
4813
|
+
TempCtor.prototype = superCtor.prototype
|
4814
|
+
ctor.prototype = new TempCtor()
|
4815
|
+
ctor.prototype.constructor = ctor
|
4816
|
+
}
|
4817
|
+
}
|
4818
|
+
|
4819
|
+
},{}],3:[function(_dereq_,module,exports){
|
4820
|
+
// shim for using process in browser
|
4821
|
+
|
4822
|
+
var process = module.exports = {};
|
4823
|
+
var queue = [];
|
4824
|
+
var draining = false;
|
4825
|
+
|
4826
|
+
function drainQueue() {
|
4827
|
+
if (draining) {
|
4828
|
+
return;
|
4829
|
+
}
|
4830
|
+
draining = true;
|
4831
|
+
var currentQueue;
|
4832
|
+
var len = queue.length;
|
4833
|
+
while(len) {
|
4834
|
+
currentQueue = queue;
|
4835
|
+
queue = [];
|
4836
|
+
var i = -1;
|
4837
|
+
while (++i < len) {
|
4838
|
+
currentQueue[i]();
|
4839
|
+
}
|
4840
|
+
len = queue.length;
|
4841
|
+
}
|
4842
|
+
draining = false;
|
4843
|
+
}
|
4844
|
+
process.nextTick = function (fun) {
|
4845
|
+
queue.push(fun);
|
4846
|
+
if (!draining) {
|
4847
|
+
setTimeout(drainQueue, 0);
|
4848
|
+
}
|
4849
|
+
};
|
4850
|
+
|
4851
|
+
process.title = 'browser';
|
4852
|
+
process.browser = true;
|
4853
|
+
process.env = {};
|
4854
|
+
process.argv = [];
|
4855
|
+
process.version = ''; // empty string to avoid regexp issues
|
4856
|
+
process.versions = {};
|
4857
|
+
|
4858
|
+
function noop() {}
|
4859
|
+
|
4860
|
+
process.on = noop;
|
4861
|
+
process.addListener = noop;
|
4862
|
+
process.once = noop;
|
4863
|
+
process.off = noop;
|
4864
|
+
process.removeListener = noop;
|
4865
|
+
process.removeAllListeners = noop;
|
4866
|
+
process.emit = noop;
|
4867
|
+
|
4868
|
+
process.binding = function (name) {
|
4869
|
+
throw new Error('process.binding is not supported');
|
4870
|
+
};
|
4871
|
+
|
4872
|
+
// TODO(shtylman)
|
4873
|
+
process.cwd = function () { return '/' };
|
4874
|
+
process.chdir = function (dir) {
|
4875
|
+
throw new Error('process.chdir is not supported');
|
4876
|
+
};
|
4877
|
+
process.umask = function() { return 0; };
|
4878
|
+
|
4879
|
+
},{}],4:[function(_dereq_,module,exports){
|
4880
|
+
module.exports = function isBuffer(arg) {
|
4881
|
+
return arg && typeof arg === 'object'
|
4882
|
+
&& typeof arg.copy === 'function'
|
4883
|
+
&& typeof arg.fill === 'function'
|
4884
|
+
&& typeof arg.readUInt8 === 'function';
|
4885
|
+
}
|
4886
|
+
},{}],5:[function(_dereq_,module,exports){
|
4887
|
+
(function (process,global){
|
4888
|
+
// Copyright Joyent, Inc. and other Node contributors.
|
4889
|
+
//
|
4890
|
+
// Permission is hereby granted, free of charge, to any person obtaining a
|
4891
|
+
// copy of this software and associated documentation files (the
|
4892
|
+
// "Software"), to deal in the Software without restriction, including
|
4893
|
+
// without limitation the rights to use, copy, modify, merge, publish,
|
4894
|
+
// distribute, sublicense, and/or sell copies of the Software, and to permit
|
4895
|
+
// persons to whom the Software is furnished to do so, subject to the
|
4896
|
+
// following conditions:
|
4897
|
+
//
|
4898
|
+
// The above copyright notice and this permission notice shall be included
|
4899
|
+
// in all copies or substantial portions of the Software.
|
4900
|
+
//
|
4901
|
+
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
4902
|
+
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
4903
|
+
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
|
4904
|
+
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
4905
|
+
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
4906
|
+
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
|
4907
|
+
// USE OR OTHER DEALINGS IN THE SOFTWARE.
|
4908
|
+
|
4909
|
+
var formatRegExp = /%[sdj%]/g;
|
4910
|
+
exports.format = function(f) {
|
4911
|
+
if (!isString(f)) {
|
4912
|
+
var objects = [];
|
4913
|
+
for (var i = 0; i < arguments.length; i++) {
|
4914
|
+
objects.push(inspect(arguments[i]));
|
4915
|
+
}
|
4916
|
+
return objects.join(' ');
|
4917
|
+
}
|
4918
|
+
|
4919
|
+
var i = 1;
|
4920
|
+
var args = arguments;
|
4921
|
+
var len = args.length;
|
4922
|
+
var str = String(f).replace(formatRegExp, function(x) {
|
4923
|
+
if (x === '%%') return '%';
|
4924
|
+
if (i >= len) return x;
|
4925
|
+
switch (x) {
|
4926
|
+
case '%s': return String(args[i++]);
|
4927
|
+
case '%d': return Number(args[i++]);
|
4928
|
+
case '%j':
|
4929
|
+
try {
|
4930
|
+
return JSON.stringify(args[i++]);
|
4931
|
+
} catch (_) {
|
4932
|
+
return '[Circular]';
|
4933
|
+
}
|
4934
|
+
default:
|
4935
|
+
return x;
|
4936
|
+
}
|
4937
|
+
});
|
4938
|
+
for (var x = args[i]; i < len; x = args[++i]) {
|
4939
|
+
if (isNull(x) || !isObject(x)) {
|
4940
|
+
str += ' ' + x;
|
4941
|
+
} else {
|
4942
|
+
str += ' ' + inspect(x);
|
4943
|
+
}
|
4944
|
+
}
|
4945
|
+
return str;
|
4946
|
+
};
|
4947
|
+
|
4948
|
+
|
4949
|
+
// Mark that a method should not be used.
|
4950
|
+
// Returns a modified function which warns once by default.
|
4951
|
+
// If --no-deprecation is set, then it is a no-op.
|
4952
|
+
exports.deprecate = function(fn, msg) {
|
4953
|
+
// Allow for deprecating things in the process of starting up.
|
4954
|
+
if (isUndefined(global.process)) {
|
4955
|
+
return function() {
|
4956
|
+
return exports.deprecate(fn, msg).apply(this, arguments);
|
4957
|
+
};
|
4958
|
+
}
|
4959
|
+
|
4960
|
+
if (process.noDeprecation === true) {
|
4961
|
+
return fn;
|
4962
|
+
}
|
4963
|
+
|
4964
|
+
var warned = false;
|
4965
|
+
function deprecated() {
|
4966
|
+
if (!warned) {
|
4967
|
+
if (process.throwDeprecation) {
|
4968
|
+
throw new Error(msg);
|
4969
|
+
} else if (process.traceDeprecation) {
|
4970
|
+
console.trace(msg);
|
4971
|
+
} else {
|
4972
|
+
console.error(msg);
|
4973
|
+
}
|
4974
|
+
warned = true;
|
4975
|
+
}
|
4976
|
+
return fn.apply(this, arguments);
|
4977
|
+
}
|
4978
|
+
|
4979
|
+
return deprecated;
|
4980
|
+
};
|
4981
|
+
|
4982
|
+
|
4983
|
+
var debugs = {};
|
4984
|
+
var debugEnviron;
|
4985
|
+
exports.debuglog = function(set) {
|
4986
|
+
if (isUndefined(debugEnviron))
|
4987
|
+
debugEnviron = process.env.NODE_DEBUG || '';
|
4988
|
+
set = set.toUpperCase();
|
4989
|
+
if (!debugs[set]) {
|
4990
|
+
if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
|
4991
|
+
var pid = process.pid;
|
4992
|
+
debugs[set] = function() {
|
4993
|
+
var msg = exports.format.apply(exports, arguments);
|
4994
|
+
console.error('%s %d: %s', set, pid, msg);
|
4995
|
+
};
|
4996
|
+
} else {
|
4997
|
+
debugs[set] = function() {};
|
4998
|
+
}
|
4999
|
+
}
|
5000
|
+
return debugs[set];
|
5001
|
+
};
|
5002
|
+
|
5003
|
+
|
5004
|
+
/**
|
5005
|
+
* Echos the value of a value. Trys to print the value out
|
5006
|
+
* in the best way possible given the different types.
|
5007
|
+
*
|
5008
|
+
* @param {Object} obj The object to print out.
|
5009
|
+
* @param {Object} opts Optional options object that alters the output.
|
5010
|
+
*/
|
5011
|
+
/* legacy: obj, showHidden, depth, colors*/
|
5012
|
+
function inspect(obj, opts) {
|
5013
|
+
// default options
|
5014
|
+
var ctx = {
|
5015
|
+
seen: [],
|
5016
|
+
stylize: stylizeNoColor
|
5017
|
+
};
|
5018
|
+
// legacy...
|
5019
|
+
if (arguments.length >= 3) ctx.depth = arguments[2];
|
5020
|
+
if (arguments.length >= 4) ctx.colors = arguments[3];
|
5021
|
+
if (isBoolean(opts)) {
|
5022
|
+
// legacy...
|
5023
|
+
ctx.showHidden = opts;
|
5024
|
+
} else if (opts) {
|
5025
|
+
// got an "options" object
|
5026
|
+
exports._extend(ctx, opts);
|
5027
|
+
}
|
5028
|
+
// set default options
|
5029
|
+
if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
|
5030
|
+
if (isUndefined(ctx.depth)) ctx.depth = 2;
|
5031
|
+
if (isUndefined(ctx.colors)) ctx.colors = false;
|
5032
|
+
if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
|
5033
|
+
if (ctx.colors) ctx.stylize = stylizeWithColor;
|
5034
|
+
return formatValue(ctx, obj, ctx.depth);
|
5035
|
+
}
|
5036
|
+
exports.inspect = inspect;
|
5037
|
+
|
5038
|
+
|
5039
|
+
// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
|
5040
|
+
inspect.colors = {
|
5041
|
+
'bold' : [1, 22],
|
5042
|
+
'italic' : [3, 23],
|
5043
|
+
'underline' : [4, 24],
|
5044
|
+
'inverse' : [7, 27],
|
5045
|
+
'white' : [37, 39],
|
5046
|
+
'grey' : [90, 39],
|
5047
|
+
'black' : [30, 39],
|
5048
|
+
'blue' : [34, 39],
|
5049
|
+
'cyan' : [36, 39],
|
5050
|
+
'green' : [32, 39],
|
5051
|
+
'magenta' : [35, 39],
|
5052
|
+
'red' : [31, 39],
|
5053
|
+
'yellow' : [33, 39]
|
5054
|
+
};
|
5055
|
+
|
5056
|
+
// Don't use 'blue' not visible on cmd.exe
|
5057
|
+
inspect.styles = {
|
5058
|
+
'special': 'cyan',
|
5059
|
+
'number': 'yellow',
|
5060
|
+
'boolean': 'yellow',
|
5061
|
+
'undefined': 'grey',
|
5062
|
+
'null': 'bold',
|
5063
|
+
'string': 'green',
|
5064
|
+
'date': 'magenta',
|
5065
|
+
// "name": intentionally not styling
|
5066
|
+
'regexp': 'red'
|
5067
|
+
};
|
5068
|
+
|
5069
|
+
|
5070
|
+
function stylizeWithColor(str, styleType) {
|
5071
|
+
var style = inspect.styles[styleType];
|
5072
|
+
|
5073
|
+
if (style) {
|
5074
|
+
return '\u001b[' + inspect.colors[style][0] + 'm' + str +
|
5075
|
+
'\u001b[' + inspect.colors[style][1] + 'm';
|
5076
|
+
} else {
|
5077
|
+
return str;
|
5078
|
+
}
|
5079
|
+
}
|
5080
|
+
|
5081
|
+
|
5082
|
+
function stylizeNoColor(str, styleType) {
|
5083
|
+
return str;
|
5084
|
+
}
|
5085
|
+
|
5086
|
+
|
5087
|
+
function arrayToHash(array) {
|
5088
|
+
var hash = {};
|
5089
|
+
|
5090
|
+
array.forEach(function(val, idx) {
|
5091
|
+
hash[val] = true;
|
5092
|
+
});
|
5093
|
+
|
5094
|
+
return hash;
|
5095
|
+
}
|
5096
|
+
|
5097
|
+
|
5098
|
+
function formatValue(ctx, value, recurseTimes) {
|
5099
|
+
// Provide a hook for user-specified inspect functions.
|
5100
|
+
// Check that value is an object with an inspect function on it
|
5101
|
+
if (ctx.customInspect &&
|
5102
|
+
value &&
|
5103
|
+
isFunction(value.inspect) &&
|
5104
|
+
// Filter out the util module, it's inspect function is special
|
5105
|
+
value.inspect !== exports.inspect &&
|
5106
|
+
// Also filter out any prototype objects using the circular check.
|
5107
|
+
!(value.constructor && value.constructor.prototype === value)) {
|
5108
|
+
var ret = value.inspect(recurseTimes, ctx);
|
5109
|
+
if (!isString(ret)) {
|
5110
|
+
ret = formatValue(ctx, ret, recurseTimes);
|
5111
|
+
}
|
5112
|
+
return ret;
|
5113
|
+
}
|
5114
|
+
|
5115
|
+
// Primitive types cannot have properties
|
5116
|
+
var primitive = formatPrimitive(ctx, value);
|
5117
|
+
if (primitive) {
|
5118
|
+
return primitive;
|
5119
|
+
}
|
5120
|
+
|
5121
|
+
// Look up the keys of the object.
|
5122
|
+
var keys = Object.keys(value);
|
5123
|
+
var visibleKeys = arrayToHash(keys);
|
5124
|
+
|
5125
|
+
if (ctx.showHidden) {
|
5126
|
+
keys = Object.getOwnPropertyNames(value);
|
5127
|
+
}
|
5128
|
+
|
5129
|
+
// IE doesn't make error fields non-enumerable
|
5130
|
+
// http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx
|
5131
|
+
if (isError(value)
|
5132
|
+
&& (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {
|
5133
|
+
return formatError(value);
|
5134
|
+
}
|
5135
|
+
|
5136
|
+
// Some type of object without properties can be shortcutted.
|
5137
|
+
if (keys.length === 0) {
|
5138
|
+
if (isFunction(value)) {
|
5139
|
+
var name = value.name ? ': ' + value.name : '';
|
5140
|
+
return ctx.stylize('[Function' + name + ']', 'special');
|
5141
|
+
}
|
5142
|
+
if (isRegExp(value)) {
|
5143
|
+
return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
|
5144
|
+
}
|
5145
|
+
if (isDate(value)) {
|
5146
|
+
return ctx.stylize(Date.prototype.toString.call(value), 'date');
|
5147
|
+
}
|
5148
|
+
if (isError(value)) {
|
5149
|
+
return formatError(value);
|
5150
|
+
}
|
5151
|
+
}
|
5152
|
+
|
5153
|
+
var base = '', array = false, braces = ['{', '}'];
|
5154
|
+
|
5155
|
+
// Make Array say that they are Array
|
5156
|
+
if (isArray(value)) {
|
5157
|
+
array = true;
|
5158
|
+
braces = ['[', ']'];
|
5159
|
+
}
|
5160
|
+
|
5161
|
+
// Make functions say that they are functions
|
5162
|
+
if (isFunction(value)) {
|
5163
|
+
var n = value.name ? ': ' + value.name : '';
|
5164
|
+
base = ' [Function' + n + ']';
|
5165
|
+
}
|
5166
|
+
|
5167
|
+
// Make RegExps say that they are RegExps
|
5168
|
+
if (isRegExp(value)) {
|
5169
|
+
base = ' ' + RegExp.prototype.toString.call(value);
|
5170
|
+
}
|
5171
|
+
|
5172
|
+
// Make dates with properties first say the date
|
5173
|
+
if (isDate(value)) {
|
5174
|
+
base = ' ' + Date.prototype.toUTCString.call(value);
|
5175
|
+
}
|
5176
|
+
|
5177
|
+
// Make error with message first say the error
|
5178
|
+
if (isError(value)) {
|
5179
|
+
base = ' ' + formatError(value);
|
5180
|
+
}
|
5181
|
+
|
5182
|
+
if (keys.length === 0 && (!array || value.length == 0)) {
|
5183
|
+
return braces[0] + base + braces[1];
|
5184
|
+
}
|
5185
|
+
|
5186
|
+
if (recurseTimes < 0) {
|
5187
|
+
if (isRegExp(value)) {
|
5188
|
+
return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
|
5189
|
+
} else {
|
5190
|
+
return ctx.stylize('[Object]', 'special');
|
5191
|
+
}
|
5192
|
+
}
|
5193
|
+
|
5194
|
+
ctx.seen.push(value);
|
5195
|
+
|
5196
|
+
var output;
|
5197
|
+
if (array) {
|
5198
|
+
output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
|
5199
|
+
} else {
|
5200
|
+
output = keys.map(function(key) {
|
5201
|
+
return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
|
5202
|
+
});
|
5203
|
+
}
|
5204
|
+
|
5205
|
+
ctx.seen.pop();
|
5206
|
+
|
5207
|
+
return reduceToSingleString(output, base, braces);
|
5208
|
+
}
|
5209
|
+
|
5210
|
+
|
5211
|
+
function formatPrimitive(ctx, value) {
|
5212
|
+
if (isUndefined(value))
|
5213
|
+
return ctx.stylize('undefined', 'undefined');
|
5214
|
+
if (isString(value)) {
|
5215
|
+
var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
|
5216
|
+
.replace(/'/g, "\\'")
|
5217
|
+
.replace(/\\"/g, '"') + '\'';
|
5218
|
+
return ctx.stylize(simple, 'string');
|
5219
|
+
}
|
5220
|
+
if (isNumber(value))
|
5221
|
+
return ctx.stylize('' + value, 'number');
|
5222
|
+
if (isBoolean(value))
|
5223
|
+
return ctx.stylize('' + value, 'boolean');
|
5224
|
+
// For some reason typeof null is "object", so special case here.
|
5225
|
+
if (isNull(value))
|
5226
|
+
return ctx.stylize('null', 'null');
|
5227
|
+
}
|
5228
|
+
|
5229
|
+
|
5230
|
+
function formatError(value) {
|
5231
|
+
return '[' + Error.prototype.toString.call(value) + ']';
|
5232
|
+
}
|
5233
|
+
|
5234
|
+
|
5235
|
+
function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
|
5236
|
+
var output = [];
|
5237
|
+
for (var i = 0, l = value.length; i < l; ++i) {
|
5238
|
+
if (hasOwnProperty(value, String(i))) {
|
5239
|
+
output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
|
5240
|
+
String(i), true));
|
5241
|
+
} else {
|
5242
|
+
output.push('');
|
5243
|
+
}
|
5244
|
+
}
|
5245
|
+
keys.forEach(function(key) {
|
5246
|
+
if (!key.match(/^\d+$/)) {
|
5247
|
+
output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
|
5248
|
+
key, true));
|
5249
|
+
}
|
5250
|
+
});
|
5251
|
+
return output;
|
5252
|
+
}
|
5253
|
+
|
5254
|
+
|
5255
|
+
function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
|
5256
|
+
var name, str, desc;
|
5257
|
+
desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
|
5258
|
+
if (desc.get) {
|
5259
|
+
if (desc.set) {
|
5260
|
+
str = ctx.stylize('[Getter/Setter]', 'special');
|
5261
|
+
} else {
|
5262
|
+
str = ctx.stylize('[Getter]', 'special');
|
5263
|
+
}
|
5264
|
+
} else {
|
5265
|
+
if (desc.set) {
|
5266
|
+
str = ctx.stylize('[Setter]', 'special');
|
5267
|
+
}
|
5268
|
+
}
|
5269
|
+
if (!hasOwnProperty(visibleKeys, key)) {
|
5270
|
+
name = '[' + key + ']';
|
5271
|
+
}
|
5272
|
+
if (!str) {
|
5273
|
+
if (ctx.seen.indexOf(desc.value) < 0) {
|
5274
|
+
if (isNull(recurseTimes)) {
|
5275
|
+
str = formatValue(ctx, desc.value, null);
|
5276
|
+
} else {
|
5277
|
+
str = formatValue(ctx, desc.value, recurseTimes - 1);
|
5278
|
+
}
|
5279
|
+
if (str.indexOf('\n') > -1) {
|
5280
|
+
if (array) {
|
5281
|
+
str = str.split('\n').map(function(line) {
|
5282
|
+
return ' ' + line;
|
5283
|
+
}).join('\n').substr(2);
|
5284
|
+
} else {
|
5285
|
+
str = '\n' + str.split('\n').map(function(line) {
|
5286
|
+
return ' ' + line;
|
5287
|
+
}).join('\n');
|
5288
|
+
}
|
5289
|
+
}
|
5290
|
+
} else {
|
5291
|
+
str = ctx.stylize('[Circular]', 'special');
|
5292
|
+
}
|
5293
|
+
}
|
5294
|
+
if (isUndefined(name)) {
|
5295
|
+
if (array && key.match(/^\d+$/)) {
|
5296
|
+
return str;
|
5297
|
+
}
|
5298
|
+
name = JSON.stringify('' + key);
|
5299
|
+
if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
|
5300
|
+
name = name.substr(1, name.length - 2);
|
5301
|
+
name = ctx.stylize(name, 'name');
|
5302
|
+
} else {
|
5303
|
+
name = name.replace(/'/g, "\\'")
|
5304
|
+
.replace(/\\"/g, '"')
|
5305
|
+
.replace(/(^"|"$)/g, "'");
|
5306
|
+
name = ctx.stylize(name, 'string');
|
5307
|
+
}
|
5308
|
+
}
|
5309
|
+
|
5310
|
+
return name + ': ' + str;
|
5311
|
+
}
|
5312
|
+
|
5313
|
+
|
5314
|
+
function reduceToSingleString(output, base, braces) {
|
5315
|
+
var numLinesEst = 0;
|
5316
|
+
var length = output.reduce(function(prev, cur) {
|
5317
|
+
numLinesEst++;
|
5318
|
+
if (cur.indexOf('\n') >= 0) numLinesEst++;
|
5319
|
+
return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1;
|
5320
|
+
}, 0);
|
5321
|
+
|
5322
|
+
if (length > 60) {
|
5323
|
+
return braces[0] +
|
5324
|
+
(base === '' ? '' : base + '\n ') +
|
5325
|
+
' ' +
|
5326
|
+
output.join(',\n ') +
|
5327
|
+
' ' +
|
5328
|
+
braces[1];
|
5329
|
+
}
|
5330
|
+
|
5331
|
+
return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
|
5332
|
+
}
|
5333
|
+
|
5334
|
+
|
5335
|
+
// NOTE: These type checking functions intentionally don't use `instanceof`
|
5336
|
+
// because it is fragile and can be easily faked with `Object.create()`.
|
5337
|
+
function isArray(ar) {
|
5338
|
+
return Array.isArray(ar);
|
5339
|
+
}
|
5340
|
+
exports.isArray = isArray;
|
5341
|
+
|
5342
|
+
function isBoolean(arg) {
|
5343
|
+
return typeof arg === 'boolean';
|
5344
|
+
}
|
5345
|
+
exports.isBoolean = isBoolean;
|
5346
|
+
|
5347
|
+
function isNull(arg) {
|
5348
|
+
return arg === null;
|
5349
|
+
}
|
5350
|
+
exports.isNull = isNull;
|
5351
|
+
|
5352
|
+
function isNullOrUndefined(arg) {
|
5353
|
+
return arg == null;
|
5354
|
+
}
|
5355
|
+
exports.isNullOrUndefined = isNullOrUndefined;
|
5356
|
+
|
5357
|
+
function isNumber(arg) {
|
5358
|
+
return typeof arg === 'number';
|
5359
|
+
}
|
5360
|
+
exports.isNumber = isNumber;
|
5361
|
+
|
5362
|
+
function isString(arg) {
|
5363
|
+
return typeof arg === 'string';
|
5364
|
+
}
|
5365
|
+
exports.isString = isString;
|
5366
|
+
|
5367
|
+
function isSymbol(arg) {
|
5368
|
+
return typeof arg === 'symbol';
|
5369
|
+
}
|
5370
|
+
exports.isSymbol = isSymbol;
|
5371
|
+
|
5372
|
+
function isUndefined(arg) {
|
5373
|
+
return arg === void 0;
|
5374
|
+
}
|
5375
|
+
exports.isUndefined = isUndefined;
|
5376
|
+
|
5377
|
+
function isRegExp(re) {
|
5378
|
+
return isObject(re) && objectToString(re) === '[object RegExp]';
|
5379
|
+
}
|
5380
|
+
exports.isRegExp = isRegExp;
|
5381
|
+
|
5382
|
+
function isObject(arg) {
|
5383
|
+
return typeof arg === 'object' && arg !== null;
|
5384
|
+
}
|
5385
|
+
exports.isObject = isObject;
|
5386
|
+
|
5387
|
+
function isDate(d) {
|
5388
|
+
return isObject(d) && objectToString(d) === '[object Date]';
|
5389
|
+
}
|
5390
|
+
exports.isDate = isDate;
|
5391
|
+
|
5392
|
+
function isError(e) {
|
5393
|
+
return isObject(e) &&
|
5394
|
+
(objectToString(e) === '[object Error]' || e instanceof Error);
|
5395
|
+
}
|
5396
|
+
exports.isError = isError;
|
5397
|
+
|
5398
|
+
function isFunction(arg) {
|
5399
|
+
return typeof arg === 'function';
|
5400
|
+
}
|
5401
|
+
exports.isFunction = isFunction;
|
5402
|
+
|
5403
|
+
function isPrimitive(arg) {
|
5404
|
+
return arg === null ||
|
5405
|
+
typeof arg === 'boolean' ||
|
5406
|
+
typeof arg === 'number' ||
|
5407
|
+
typeof arg === 'string' ||
|
5408
|
+
typeof arg === 'symbol' || // ES6 symbol
|
5409
|
+
typeof arg === 'undefined';
|
5410
|
+
}
|
5411
|
+
exports.isPrimitive = isPrimitive;
|
5412
|
+
|
5413
|
+
exports.isBuffer = _dereq_('./support/isBuffer');
|
5414
|
+
|
5415
|
+
function objectToString(o) {
|
5416
|
+
return Object.prototype.toString.call(o);
|
5417
|
+
}
|
5418
|
+
|
5419
|
+
|
5420
|
+
function pad(n) {
|
5421
|
+
return n < 10 ? '0' + n.toString(10) : n.toString(10);
|
5422
|
+
}
|
5423
|
+
|
5424
|
+
|
5425
|
+
var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
|
5426
|
+
'Oct', 'Nov', 'Dec'];
|
5427
|
+
|
5428
|
+
// 26 Feb 16:19:34
|
5429
|
+
function timestamp() {
|
5430
|
+
var d = new Date();
|
5431
|
+
var time = [pad(d.getHours()),
|
5432
|
+
pad(d.getMinutes()),
|
5433
|
+
pad(d.getSeconds())].join(':');
|
5434
|
+
return [d.getDate(), months[d.getMonth()], time].join(' ');
|
5435
|
+
}
|
5436
|
+
|
5437
|
+
|
5438
|
+
// log is just a thin wrapper to console.log that prepends a timestamp
|
5439
|
+
exports.log = function() {
|
5440
|
+
console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
|
5441
|
+
};
|
5442
|
+
|
5443
|
+
|
5444
|
+
/**
|
5445
|
+
* Inherit the prototype methods from one constructor into another.
|
5446
|
+
*
|
5447
|
+
* The Function.prototype.inherits from lang.js rewritten as a standalone
|
5448
|
+
* function (not on Function.prototype). NOTE: If this file is to be loaded
|
5449
|
+
* during bootstrapping this function needs to be rewritten using some native
|
5450
|
+
* functions as prototype setup using normal JavaScript does not work as
|
5451
|
+
* expected during bootstrapping (see mirror.js in r114903).
|
5452
|
+
*
|
5453
|
+
* @param {function} ctor Constructor function which needs to inherit the
|
5454
|
+
* prototype.
|
5455
|
+
* @param {function} superCtor Constructor function to inherit prototype from.
|
5456
|
+
*/
|
5457
|
+
exports.inherits = _dereq_('inherits');
|
5458
|
+
|
5459
|
+
exports._extend = function(origin, add) {
|
5460
|
+
// Don't do anything if add isn't an object
|
5461
|
+
if (!add || !isObject(add)) return origin;
|
5462
|
+
|
5463
|
+
var keys = Object.keys(add);
|
5464
|
+
var i = keys.length;
|
5465
|
+
while (i--) {
|
5466
|
+
origin[keys[i]] = add[keys[i]];
|
5467
|
+
}
|
5468
|
+
return origin;
|
5469
|
+
};
|
5470
|
+
|
5471
|
+
function hasOwnProperty(obj, prop) {
|
5472
|
+
return Object.prototype.hasOwnProperty.call(obj, prop);
|
5473
|
+
}
|
5474
|
+
|
5475
|
+
}).call(this,_dereq_('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
|
5476
|
+
},{"./support/isBuffer":4,"_process":3,"inherits":2}],6:[function(_dereq_,module,exports){
|
4746
5477
|
// A recursive descent parser operates by defining functions for all
|
4747
5478
|
// syntactic elements, and recursively calling those, each function
|
4748
5479
|
// advancing the input stream and returning an AST node. Precedence
|
@@ -4903,6 +5634,16 @@ pp.parseExprOps = function (noIn, refShorthandDefaultPos) {
|
|
4903
5634
|
|
4904
5635
|
pp.parseExprOp = function (left, leftStartPos, leftStartLoc, minPrec, noIn) {
|
4905
5636
|
var prec = this.type.binop;
|
5637
|
+
if (Array.isArray(leftStartPos)) {
|
5638
|
+
if (this.options.locations && noIn === undefined) {
|
5639
|
+
// shift arguments to left by one
|
5640
|
+
noIn = minPrec;
|
5641
|
+
minPrec = leftStartLoc;
|
5642
|
+
// flatten leftStartPos
|
5643
|
+
leftStartLoc = leftStartPos[1];
|
5644
|
+
leftStartPos = leftStartPos[0];
|
5645
|
+
}
|
5646
|
+
}
|
4906
5647
|
if (prec != null && (!noIn || this.type !== tt._in)) {
|
4907
5648
|
if (prec > minPrec) {
|
4908
5649
|
var node = this.startNodeAt(leftStartPos, leftStartLoc);
|
@@ -4961,6 +5702,15 @@ pp.parseExprSubscripts = function (refShorthandDefaultPos) {
|
|
4961
5702
|
};
|
4962
5703
|
|
4963
5704
|
pp.parseSubscripts = function (base, startPos, startLoc, noCalls) {
|
5705
|
+
if (Array.isArray(startPos)) {
|
5706
|
+
if (this.options.locations && noCalls === undefined) {
|
5707
|
+
// shift arguments to left by one
|
5708
|
+
noCalls = startLoc;
|
5709
|
+
// flatten startPos
|
5710
|
+
startLoc = startPos[1];
|
5711
|
+
startPos = startPos[0];
|
5712
|
+
}
|
5713
|
+
}
|
4964
5714
|
for (;;) {
|
4965
5715
|
if (this.eat(tt.dot)) {
|
4966
5716
|
var node = this.startNodeAt(startPos, startLoc);
|
@@ -5276,12 +6026,12 @@ pp.parsePropertyName = function (prop) {
|
|
5276
6026
|
prop.computed = true;
|
5277
6027
|
prop.key = this.parseMaybeAssign();
|
5278
6028
|
this.expect(tt.bracketR);
|
5279
|
-
return;
|
6029
|
+
return prop.key;
|
5280
6030
|
} else {
|
5281
6031
|
prop.computed = false;
|
5282
6032
|
}
|
5283
6033
|
}
|
5284
|
-
prop.key = this.type === tt.num || this.type === tt.string ? this.parseExprAtom() : this.parseIdent(true);
|
6034
|
+
return prop.key = this.type === tt.num || this.type === tt.string ? this.parseExprAtom() : this.parseIdent(true);
|
5285
6035
|
};
|
5286
6036
|
|
5287
6037
|
// Initialize empty function node.
|
@@ -5435,7 +6185,7 @@ pp.parseComprehension = function (node, isGenerator) {
|
|
5435
6185
|
return this.finishNode(node, "ComprehensionExpression");
|
5436
6186
|
};
|
5437
6187
|
|
5438
|
-
},{"./identifier":
|
6188
|
+
},{"./identifier":7,"./state":13,"./tokentype":17,"./util":18}],7:[function(_dereq_,module,exports){
|
5439
6189
|
|
5440
6190
|
|
5441
6191
|
// Test whether a given character code starts an identifier.
|
@@ -5598,7 +6348,7 @@ function isIdentifierChar(code, astral) {
|
|
5598
6348
|
}return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes);
|
5599
6349
|
}
|
5600
6350
|
|
5601
|
-
},{}],
|
6351
|
+
},{}],8:[function(_dereq_,module,exports){
|
5602
6352
|
"use strict";
|
5603
6353
|
|
5604
6354
|
var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } };
|
@@ -5616,6 +6366,8 @@ var Parser = _dereq_("./state").Parser;
|
|
5616
6366
|
|
5617
6367
|
var lineBreakG = _dereq_("./whitespace").lineBreakG;
|
5618
6368
|
|
6369
|
+
var deprecate = _dereq_("util").deprecate;
|
6370
|
+
|
5619
6371
|
// These are used when `options.locations` is on, for the
|
5620
6372
|
// `startLoc` and `endLoc` properties.
|
5621
6373
|
|
@@ -5675,7 +6427,11 @@ pp.curPosition = function () {
|
|
5675
6427
|
return new Position(this.curLine, this.pos - this.lineStart);
|
5676
6428
|
};
|
5677
6429
|
|
5678
|
-
|
6430
|
+
pp.markPosition = function () {
|
6431
|
+
return this.options.locations ? [this.start, this.startLoc] : this.start;
|
6432
|
+
};
|
6433
|
+
|
6434
|
+
},{"./state":13,"./whitespace":19,"util":5}],9:[function(_dereq_,module,exports){
|
5679
6435
|
"use strict";
|
5680
6436
|
|
5681
6437
|
var tt = _dereq_("./tokentype").types;
|
@@ -5828,6 +6584,15 @@ pp.parseBindingListItem = function (param) {
|
|
5828
6584
|
// Parses assignment pattern around given atom if possible.
|
5829
6585
|
|
5830
6586
|
pp.parseMaybeDefault = function (startPos, startLoc, left) {
|
6587
|
+
if (Array.isArray(startPos)) {
|
6588
|
+
if (this.options.locations && noCalls === undefined) {
|
6589
|
+
// shift arguments to left by one
|
6590
|
+
left = startLoc;
|
6591
|
+
// flatten startPos
|
6592
|
+
startLoc = startPos[1];
|
6593
|
+
startPos = startPos[0];
|
6594
|
+
}
|
6595
|
+
}
|
5831
6596
|
left = left || this.parseBindingAtom();
|
5832
6597
|
if (!this.eat(tt.eq)) return left;
|
5833
6598
|
var node = this.startNodeAt(startPos, startLoc);
|
@@ -5883,7 +6648,7 @@ pp.checkLVal = function (expr, isBinding, checkClashes) {
|
|
5883
6648
|
}
|
5884
6649
|
};
|
5885
6650
|
|
5886
|
-
},{"./identifier":
|
6651
|
+
},{"./identifier":7,"./state":13,"./tokentype":17,"./util":18}],10:[function(_dereq_,module,exports){
|
5887
6652
|
"use strict";
|
5888
6653
|
|
5889
6654
|
var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } };
|
@@ -5913,6 +6678,13 @@ pp.startNode = function () {
|
|
5913
6678
|
|
5914
6679
|
pp.startNodeAt = function (pos, loc) {
|
5915
6680
|
var node = new Node();
|
6681
|
+
if (Array.isArray(pos)) {
|
6682
|
+
if (this.options.locations && loc === undefined) {
|
6683
|
+
// flatten pos
|
6684
|
+
loc = pos[1];
|
6685
|
+
pos = pos[0];
|
6686
|
+
}
|
6687
|
+
}
|
5916
6688
|
node.start = pos;
|
5917
6689
|
if (this.options.locations) node.loc = new SourceLocation(this, loc);
|
5918
6690
|
if (this.options.directSourceFile) node.sourceFile = this.options.directSourceFile;
|
@@ -5934,13 +6706,20 @@ pp.finishNode = function (node, type) {
|
|
5934
6706
|
|
5935
6707
|
pp.finishNodeAt = function (node, type, pos, loc) {
|
5936
6708
|
node.type = type;
|
6709
|
+
if (Array.isArray(pos)) {
|
6710
|
+
if (this.options.locations && loc === undefined) {
|
6711
|
+
// flatten pos
|
6712
|
+
loc = pos[1];
|
6713
|
+
pos = pos[0];
|
6714
|
+
}
|
6715
|
+
}
|
5937
6716
|
node.end = pos;
|
5938
6717
|
if (this.options.locations) node.loc.end = loc;
|
5939
6718
|
if (this.options.ranges) node.range[1] = pos;
|
5940
6719
|
return node;
|
5941
6720
|
};
|
5942
6721
|
|
5943
|
-
},{"./location":
|
6722
|
+
},{"./location":8,"./state":13}],11:[function(_dereq_,module,exports){
|
5944
6723
|
|
5945
6724
|
|
5946
6725
|
// Interpret and default an options object
|
@@ -6071,7 +6850,7 @@ function pushComment(options, array) {
|
|
6071
6850
|
};
|
6072
6851
|
}
|
6073
6852
|
|
6074
|
-
},{"./location":
|
6853
|
+
},{"./location":8,"./util":18}],12:[function(_dereq_,module,exports){
|
6075
6854
|
"use strict";
|
6076
6855
|
|
6077
6856
|
var tt = _dereq_("./tokentype").types;
|
@@ -6161,7 +6940,7 @@ pp.unexpected = function (pos) {
|
|
6161
6940
|
this.raise(pos != null ? pos : this.start, "Unexpected token");
|
6162
6941
|
};
|
6163
6942
|
|
6164
|
-
},{"./state":
|
6943
|
+
},{"./state":13,"./tokentype":17,"./whitespace":19}],13:[function(_dereq_,module,exports){
|
6165
6944
|
"use strict";
|
6166
6945
|
|
6167
6946
|
exports.Parser = Parser;
|
@@ -6172,19 +6951,20 @@ var _identifier = _dereq_("./identifier");
|
|
6172
6951
|
var reservedWords = _identifier.reservedWords;
|
6173
6952
|
var keywords = _identifier.keywords;
|
6174
6953
|
|
6175
|
-
var
|
6954
|
+
var tt = _dereq_("./tokentype").types;
|
6176
6955
|
|
6177
|
-
var
|
6178
|
-
var lineBreak = _tokentype.lineBreak;
|
6956
|
+
var lineBreak = _dereq_("./whitespace").lineBreak;
|
6179
6957
|
|
6180
6958
|
function Parser(options, input, startPos) {
|
6181
6959
|
this.options = options;
|
6182
|
-
this.loadPlugins(this.options.plugins);
|
6183
6960
|
this.sourceFile = this.options.sourceFile || null;
|
6184
6961
|
this.isKeyword = keywords[this.options.ecmaVersion >= 6 ? 6 : 5];
|
6185
6962
|
this.isReservedWord = reservedWords[this.options.ecmaVersion];
|
6186
6963
|
this.input = input;
|
6187
6964
|
|
6965
|
+
// Load plugins
|
6966
|
+
this.loadPlugins(this.options.plugins);
|
6967
|
+
|
6188
6968
|
// Set up token state
|
6189
6969
|
|
6190
6970
|
// The current position of the tokenizer in the input.
|
@@ -6250,7 +7030,7 @@ Parser.prototype.loadPlugins = function (plugins) {
|
|
6250
7030
|
}
|
6251
7031
|
};
|
6252
7032
|
|
6253
|
-
},{"./identifier":
|
7033
|
+
},{"./identifier":7,"./tokentype":17,"./whitespace":19}],14:[function(_dereq_,module,exports){
|
6254
7034
|
"use strict";
|
6255
7035
|
|
6256
7036
|
var tt = _dereq_("./tokentype").types;
|
@@ -6680,32 +7460,37 @@ pp.parseClass = function (node, isStatement) {
|
|
6680
7460
|
this.parseClassId(node, isStatement);
|
6681
7461
|
this.parseClassSuper(node);
|
6682
7462
|
var classBody = this.startNode();
|
7463
|
+
var hadConstructor = false;
|
6683
7464
|
classBody.body = [];
|
6684
7465
|
this.expect(tt.braceL);
|
6685
7466
|
while (!this.eat(tt.braceR)) {
|
6686
7467
|
if (this.eat(tt.semi)) continue;
|
6687
7468
|
var method = this.startNode();
|
6688
7469
|
var isGenerator = this.eat(tt.star);
|
7470
|
+
var isMaybeStatic = this.type === tt.name && this.value === "static";
|
6689
7471
|
this.parsePropertyName(method);
|
6690
|
-
|
7472
|
+
method["static"] = isMaybeStatic && this.type !== tt.parenL;
|
7473
|
+
if (method["static"]) {
|
6691
7474
|
if (isGenerator) this.unexpected();
|
6692
|
-
method["static"] = true;
|
6693
7475
|
isGenerator = this.eat(tt.star);
|
6694
7476
|
this.parsePropertyName(method);
|
6695
|
-
} else {
|
6696
|
-
method["static"] = false;
|
6697
7477
|
}
|
6698
7478
|
method.kind = "method";
|
6699
|
-
if (!method.computed
|
6700
|
-
|
6701
|
-
|
6702
|
-
|
6703
|
-
|
6704
|
-
|
6705
|
-
|
6706
|
-
|
6707
|
-
}
|
7479
|
+
if (!method.computed) {
|
7480
|
+
var key = method.key;
|
7481
|
+
|
7482
|
+
var isGetSet = false;
|
7483
|
+
if (!isGenerator && key.type === "Identifier" && this.type !== tt.parenL && (key.name === "get" || key.name === "set")) {
|
7484
|
+
isGetSet = true;
|
7485
|
+
method.kind = key.name;
|
7486
|
+
key = this.parsePropertyName(method);
|
7487
|
+
}
|
7488
|
+
if (!method["static"] && (key.type === "Identifier" && key.name === "constructor" || key.type === "Literal" && key.value === "constructor")) {
|
7489
|
+
if (hadConstructor) this.raise(key.start, "Duplicate constructor in the same class");
|
7490
|
+
if (isGetSet) this.raise(key.start, "Constructor can't have get/set modifier");
|
7491
|
+
if (isGenerator) this.raise(key.start, "Constructor can't be a generator");
|
6708
7492
|
method.kind = "constructor";
|
7493
|
+
hadConstructor = true;
|
6709
7494
|
}
|
6710
7495
|
}
|
6711
7496
|
this.parseClassMethod(classBody, method, isGenerator);
|
@@ -6852,7 +7637,7 @@ pp.parseImportSpecifiers = function () {
|
|
6852
7637
|
return nodes;
|
6853
7638
|
};
|
6854
7639
|
|
6855
|
-
},{"./state":
|
7640
|
+
},{"./state":13,"./tokentype":17,"./whitespace":19}],15:[function(_dereq_,module,exports){
|
6856
7641
|
"use strict";
|
6857
7642
|
|
6858
7643
|
var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } };
|
@@ -6959,7 +7744,7 @@ tt.backQuote.updateContext = function () {
|
|
6959
7744
|
|
6960
7745
|
// tokExprAllowed stays unchanged
|
6961
7746
|
|
6962
|
-
},{"./state":
|
7747
|
+
},{"./state":13,"./tokentype":17,"./whitespace":19}],16:[function(_dereq_,module,exports){
|
6963
7748
|
"use strict";
|
6964
7749
|
|
6965
7750
|
var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } };
|
@@ -7006,6 +7791,9 @@ var Token = exports.Token = function Token(p) {
|
|
7006
7791
|
|
7007
7792
|
var pp = Parser.prototype;
|
7008
7793
|
|
7794
|
+
// Are we running under Rhino?
|
7795
|
+
var isRhino = typeof Packages !== "undefined";
|
7796
|
+
|
7009
7797
|
// Move to the next token
|
7010
7798
|
|
7011
7799
|
pp.next = function () {
|
@@ -7425,19 +8213,21 @@ pp.readRegexp = function () {
|
|
7425
8213
|
}
|
7426
8214
|
}
|
7427
8215
|
// Detect invalid regular expressions.
|
7428
|
-
|
7429
|
-
|
7430
|
-
|
7431
|
-
|
7432
|
-
|
7433
|
-
|
7434
|
-
|
7435
|
-
|
7436
|
-
|
7437
|
-
|
7438
|
-
|
7439
|
-
|
7440
|
-
|
8216
|
+
var value = null;
|
8217
|
+
// Rhino's regular expression parser is flaky and throws uncatchable exceptions,
|
8218
|
+
// so don't do detection if we are running under Rhino
|
8219
|
+
if (!isRhino) {
|
8220
|
+
try {
|
8221
|
+
new RegExp(tmp);
|
8222
|
+
} catch (e) {
|
8223
|
+
if (e instanceof SyntaxError) this.raise(start, "Error parsing regular expression: " + e.message);
|
8224
|
+
this.raise(e);
|
8225
|
+
}
|
8226
|
+
// Get a regular expression object for this pattern-flag pair, or `null` in
|
8227
|
+
// case the current environment doesn't support the flags it uses.
|
8228
|
+
try {
|
8229
|
+
value = new RegExp(content, mods);
|
8230
|
+
} catch (err) {}
|
7441
8231
|
}
|
7442
8232
|
return this.finishToken(tt.regexp, { pattern: content, flags: mods, value: value });
|
7443
8233
|
};
|
@@ -7701,7 +8491,7 @@ pp.readWord = function () {
|
|
7701
8491
|
return this.finishToken(type, word);
|
7702
8492
|
};
|
7703
8493
|
|
7704
|
-
},{"./identifier":
|
8494
|
+
},{"./identifier":7,"./location":8,"./state":13,"./tokentype":17,"./whitespace":19}],17:[function(_dereq_,module,exports){
|
7705
8495
|
"use strict";
|
7706
8496
|
|
7707
8497
|
var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } };
|
@@ -7857,7 +8647,7 @@ kw("typeof", { beforeExpr: true, prefix: true, startsExpr: true });
|
|
7857
8647
|
kw("void", { beforeExpr: true, prefix: true, startsExpr: true });
|
7858
8648
|
kw("delete", { beforeExpr: true, prefix: true, startsExpr: true });
|
7859
8649
|
|
7860
|
-
},{}],
|
8650
|
+
},{}],18:[function(_dereq_,module,exports){
|
7861
8651
|
"use strict";
|
7862
8652
|
|
7863
8653
|
exports.isArray = isArray;
|
@@ -7875,7 +8665,7 @@ function has(obj, propName) {
|
|
7875
8665
|
return Object.prototype.hasOwnProperty.call(obj, propName);
|
7876
8666
|
}
|
7877
8667
|
|
7878
|
-
},{}],
|
8668
|
+
},{}],19:[function(_dereq_,module,exports){
|
7879
8669
|
"use strict";
|
7880
8670
|
|
7881
8671
|
exports.isNewLine = isNewLine;
|
@@ -7957,13 +8747,13 @@ exports.findNodeBefore = findNodeBefore;
|
|
7957
8747
|
exports.make = make;
|
7958
8748
|
exports.__esModule = true;
|
7959
8749
|
|
7960
|
-
function simple(node, visitors, base, state
|
8750
|
+
function simple(node, visitors, base, state) {
|
7961
8751
|
if (!base) base = exports.base;(function c(node, st, override) {
|
7962
8752
|
var type = override || node.type,
|
7963
8753
|
found = visitors[type];
|
7964
8754
|
base[type](node, st, c);
|
7965
8755
|
if (found) found(node, st);
|
7966
|
-
})(node, state
|
8756
|
+
})(node, state);
|
7967
8757
|
}
|
7968
8758
|
|
7969
8759
|
function ancestor(node, visitors, base, state) {
|
@@ -7980,10 +8770,10 @@ function ancestor(node, visitors, base, state) {
|
|
7980
8770
|
})(node, state);
|
7981
8771
|
}
|
7982
8772
|
|
7983
|
-
function recursive(node, state, funcs, base
|
8773
|
+
function recursive(node, state, funcs, base) {
|
7984
8774
|
var visitor = funcs ? exports.make(funcs, base) : base;(function c(node, st, override) {
|
7985
8775
|
visitor[override || node.type](node, st, c);
|
7986
|
-
})(node, state
|
8776
|
+
})(node, state);
|
7987
8777
|
}
|
7988
8778
|
|
7989
8779
|
function makeTest(test) {
|
@@ -8125,15 +8915,12 @@ base.SwitchStatement = function (node, st, c) {
|
|
8125
8915
|
base.ReturnStatement = base.YieldExpression = function (node, st, c) {
|
8126
8916
|
if (node.argument) c(node.argument, st, "Expression");
|
8127
8917
|
};
|
8128
|
-
base.ThrowStatement = base.SpreadElement = function (node, st, c) {
|
8918
|
+
base.ThrowStatement = base.SpreadElement = base.RestElement = function (node, st, c) {
|
8129
8919
|
return c(node.argument, st, "Expression");
|
8130
8920
|
};
|
8131
8921
|
base.TryStatement = function (node, st, c) {
|
8132
8922
|
c(node.block, st, "Statement");
|
8133
|
-
if (node.handler)
|
8134
|
-
c(node.handler.param, st, "Pattern");
|
8135
|
-
c(node.handler.body, st, "ScopeBody");
|
8136
|
-
}
|
8923
|
+
if (node.handler) c(node.handler.body, st, "ScopeBody");
|
8137
8924
|
if (node.finalizer) c(node.finalizer, st, "Statement");
|
8138
8925
|
};
|
8139
8926
|
base.WhileStatement = base.DoWhileStatement = function (node, st, c) {
|
@@ -8162,49 +8949,26 @@ base.FunctionDeclaration = function (node, st, c) {
|
|
8162
8949
|
base.VariableDeclaration = function (node, st, c) {
|
8163
8950
|
for (var i = 0; i < node.declarations.length; ++i) {
|
8164
8951
|
var decl = node.declarations[i];
|
8165
|
-
c(decl.id, st, "Pattern");
|
8166
8952
|
if (decl.init) c(decl.init, st, "Expression");
|
8167
8953
|
}
|
8168
8954
|
};
|
8169
8955
|
|
8170
8956
|
base.Function = function (node, st, c) {
|
8171
|
-
|
8172
|
-
c(node.params[i], st, "Pattern");
|
8173
|
-
}c(node.body, st, "ScopeBody");
|
8957
|
+
return c(node.body, st, "ScopeBody");
|
8174
8958
|
};
|
8175
8959
|
base.ScopeBody = function (node, st, c) {
|
8176
8960
|
return c(node, st, "Statement");
|
8177
8961
|
};
|
8178
8962
|
|
8179
|
-
base.Pattern = function (node, st, c) {
|
8180
|
-
if (node.type == "Identifier") c(node, st, "VariablePattern");else if (node.type == "MemberExpression") c(node, st, "MemberPattern");else c(node, st);
|
8181
|
-
};
|
8182
|
-
base.VariablePattern = ignore;
|
8183
|
-
base.MemberPattern = skipThrough;
|
8184
|
-
base.RestElement = function (node, st, c) {
|
8185
|
-
return c(node.argument, st, "Pattern");
|
8186
|
-
};
|
8187
|
-
base.ArrayPattern = function (node, st, c) {
|
8188
|
-
for (var i = 0; i < node.elements.length; ++i) {
|
8189
|
-
var elt = node.elements[i];
|
8190
|
-
if (elt) c(elt, st, "Pattern");
|
8191
|
-
}
|
8192
|
-
};
|
8193
|
-
base.ObjectPattern = function (node, st, c) {
|
8194
|
-
for (var i = 0; i < node.properties.length; ++i) {
|
8195
|
-
c(node.properties[i].value, st, "Pattern");
|
8196
|
-
}
|
8197
|
-
};
|
8198
|
-
|
8199
8963
|
base.Expression = skipThrough;
|
8200
8964
|
base.ThisExpression = base.Super = base.MetaProperty = ignore;
|
8201
|
-
base.ArrayExpression = function (node, st, c) {
|
8965
|
+
base.ArrayExpression = base.ArrayPattern = function (node, st, c) {
|
8202
8966
|
for (var i = 0; i < node.elements.length; ++i) {
|
8203
8967
|
var elt = node.elements[i];
|
8204
8968
|
if (elt) c(elt, st, "Expression");
|
8205
8969
|
}
|
8206
8970
|
};
|
8207
|
-
base.ObjectExpression = function (node, st, c) {
|
8971
|
+
base.ObjectExpression = base.ObjectPattern = function (node, st, c) {
|
8208
8972
|
for (var i = 0; i < node.properties.length; ++i) {
|
8209
8973
|
c(node.properties[i], st);
|
8210
8974
|
}
|
@@ -8218,14 +8982,10 @@ base.SequenceExpression = base.TemplateLiteral = function (node, st, c) {
|
|
8218
8982
|
base.UnaryExpression = base.UpdateExpression = function (node, st, c) {
|
8219
8983
|
c(node.argument, st, "Expression");
|
8220
8984
|
};
|
8221
|
-
base.BinaryExpression = base.LogicalExpression = function (node, st, c) {
|
8985
|
+
base.BinaryExpression = base.AssignmentExpression = base.AssignmentPattern = base.LogicalExpression = function (node, st, c) {
|
8222
8986
|
c(node.left, st, "Expression");
|
8223
8987
|
c(node.right, st, "Expression");
|
8224
8988
|
};
|
8225
|
-
base.AssignmentExpression = base.AssignmentPattern = function (node, st, c) {
|
8226
|
-
c(node.left, st, "Pattern");
|
8227
|
-
c(node.right, st, "Expression");
|
8228
|
-
};
|
8229
8989
|
base.ConditionalExpression = function (node, st, c) {
|
8230
8990
|
c(node.test, st, "Expression");
|
8231
8991
|
c(node.consequent, st, "Expression");
|
@@ -8242,7 +9002,7 @@ base.MemberExpression = function (node, st, c) {
|
|
8242
9002
|
if (node.computed) c(node.property, st, "Expression");
|
8243
9003
|
};
|
8244
9004
|
base.ExportNamedDeclaration = base.ExportDefaultDeclaration = function (node, st, c) {
|
8245
|
-
|
9005
|
+
return c(node.declaration, st);
|
8246
9006
|
};
|
8247
9007
|
base.ImportDeclaration = function (node, st, c) {
|
8248
9008
|
for (var i = 0; i < node.specifiers.length; i++) {
|
@@ -8256,10 +9016,6 @@ base.TaggedTemplateExpression = function (node, st, c) {
|
|
8256
9016
|
c(node.quasi, st);
|
8257
9017
|
};
|
8258
9018
|
base.ClassDeclaration = base.ClassExpression = function (node, st, c) {
|
8259
|
-
return c(node, st, "Class");
|
8260
|
-
};
|
8261
|
-
base.Class = function (node, st, c) {
|
8262
|
-
c(node.id, st, "Pattern");
|
8263
9019
|
if (node.superClass) c(node.superClass, st, "Expression");
|
8264
9020
|
for (var i = 0; i < node.body.body.length; i++) {
|
8265
9021
|
c(node.body.body[i], st);
|
@@ -180,12 +180,21 @@ exports.attrs = function attrs(obj, terse){
|
|
180
180
|
* @api private
|
181
181
|
*/
|
182
182
|
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
183
|
+
var jade_encode_html_rules = {
|
184
|
+
'&': '&',
|
185
|
+
'<': '<',
|
186
|
+
'>': '>',
|
187
|
+
'"': '"'
|
188
|
+
};
|
189
|
+
var jade_match_html = /[&<>"]/g;
|
190
|
+
|
191
|
+
function jade_encode_char(c) {
|
192
|
+
return jade_encode_html_rules[c] || c;
|
193
|
+
}
|
194
|
+
|
195
|
+
exports.escape = jade_escape;
|
196
|
+
function jade_escape(html){
|
197
|
+
var result = String(html).replace(jade_match_html, jade_encode_char);
|
189
198
|
if (result === '' + html) return html;
|
190
199
|
else return result;
|
191
200
|
};
|