kudo
Version:
check someone's code quality in git repository
517 lines (515 loc) • 21.7 kB
HTML
<html lang="en">
<head>
<title>Code coverage report for lib/commit.js</title>
<meta charset="utf-8">
<link rel="stylesheet" href="../prettify.css">
<link rel="stylesheet" href="../base.css">
<style type='text/css'>
div.coverage-summary .sorter {
background-image: url(../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class="header high">
<h1>Code coverage report for <span class="entity">lib/commit.js</span></h1>
<h2>
Statements: <span class="metric">93.02% <small>(40 / 43)</small></span>
Branches: <span class="metric">91.67% <small>(11 / 12)</small></span>
Functions: <span class="metric">75% <small>(9 / 12)</small></span>
Lines: <span class="metric">93.02% <small>(40 / 43)</small></span>
Ignored: <span class="metric"><span class="ignore-none">none</span></span>
</h2>
<div class="path"><a href="../index.html">All files</a> » <a href="index.html">lib/</a> » commit.js</div>
</div>
<div class="body">
<pre><table class="coverage">
<tr><td class="line-count">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158</td><td class="line-coverage"><span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">19</span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-yes">19</span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-yes">19</span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">8</span>
<span class="cline-any cline-yes">8</span>
<span class="cline-any cline-yes">6</span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-yes">8</span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">6</span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-yes">11</span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-yes">11</span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-yes">11</span>
<span class="cline-any cline-yes">11</span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-yes">11</span>
<span class="cline-any cline-yes">7</span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-yes">4</span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">9</span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">/**
* @file commit 处理
* @author chris<wfsr@foxmail.com>
*/
'use strict';
var _createClass = require('babel-runtime/helpers/create-class')['default'];
var _classCallCheck = require('babel-runtime/helpers/class-call-check')['default'];
var _slicedToArray = require('babel-runtime/helpers/sliced-to-array')['default'];
var _Object$assign = require('babel-runtime/core-js/object/assign')['default'];
var _Promise = require('babel-runtime/core-js/promise')['default'];
var _interopRequireDefault = require('babel-runtime/helpers/interop-require-default')['default'];
Object.defineProperty(exports, '__esModule', {
value: true
});
var _git = require('./git');
var _file = require('./file');
var _file2 = _interopRequireDefault(_file);
/**
* 匹配文件路径的正则
*
* @const
* @type {RegExp}
*/
var FILE_REG = /^\s*\S+(?=\s*\|)/gm;
/**
* Commit
*
* @class
* @param {Object} options 配置项
* @param {string} options.id 提交的 id
* @param {string} options.date 提交时间
*/
var Commit = (function () {
function Commit() {
var options = arguments.length <= 0 || arguments[0] === undefined ? { id: '', date: new Date() } : arguments[0];
_classCallCheck(this, Commit);
_Object$assign(this, options);
}
/**
* 从 git-show 输出中获取提交的文件路径
*
* @param {string} output git-show 的输出
* @return {Promise.<File[]>}
*/
_createClass(Commit, [{
key: 'getFiles',
value: function getFiles(output) {
// istanbul ignore next
var _this = this;
var cid = this.id;
var date = this.date;
var files = (output.match(FILE_REG) || <span class="branch-1 cbranch-no" title="branch not covered" >[])</span>.reduce(function (files, path) {
path = path.trim();
if (/.+\.(?:js|css|html)$/.test(path)) {
files.push(new _file2['default']({ cid: cid, path: path, date: date }));
}
return files;
}, []);
return _Promise.all(files.map(function (file) {
return file.read();
})).then(<span class="fstat-no" title="function not covered" >function (files) {</span>
<span class="cstat-no" title="statement not covered" > return _this.files = files;</span>
});
}
/**
* 从 git-log 输出中分析生成提交实例
*
* @param {string} log git-log 的输出
* @return {?Commit}
*/
}], [{
key: 'from',
value: function from(log) {
var _log$replace$split = log.replace(/\s*(\r?\n)+/g, '').split(',');
var _log$replace$split2 = _slicedToArray(_log$replace$split, 2);
var id = _log$replace$split2[0];
var date = _log$replace$split2[1];
if (id && date) {
return new Commit({ id: id, date: new Date(date) });
}
return null;
}
/**
* 从 git-log 获取指定用户在某个时间段内的所有 Commit
*
* @param {string} name 提交代码的作者名字
* @param {string} since git 格式的时间段表示
* @return {Promise.<Commit[]>}
*/
}, {
key: 'getCommits',
value: function getCommits(name, since) {
return _git.git.run('log', '--author=' + name, '--since=\'' + since + '\'', '--pretty=format:%h,%ad').then(Commit.parse);
}
/**
* 从 git-show 获取所有 Commit 的相关文件
*
* @param {Commit[]} commits Commit 列表
* @return {Promise.<Array.<File[]>>}
*/
}, {
key: 'getFiles',
value: <span class="fstat-no" title="function not covered" >function getFiles(commits) {</span>
<span class="cstat-no" title="statement not covered" > return _Promise.all(commits.map(<span class="fstat-no" title="function not covered" >function (commit) {</span></span>
<span class="cstat-no" title="statement not covered" > return _git.git.run('show', commit.id, '--pretty=format:', '--diff-filter=AM', '--stat=1200', '--stat-graph-width=1').then(commit.getFiles.bind(commit));</span>
}));
}
/**
* 解释出 Commit 列表
*
* @param {string} logs git-log 的输出
* @return {Commit[]}
*/
}, {
key: 'parse',
value: function parse(logs) {
return logs.split(/\r?\n/).map(function (log) {
return Commit.from(log);
}).filter(Boolean);
}
}]);
return Commit;
})();
exports['default'] = Commit;
module.exports = exports['default'];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9jb21taXQuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7bUJBS2tCLE9BQU87O29CQUNSLFFBQVE7Ozs7Ozs7Ozs7QUFRekIsSUFBTSxRQUFRLEdBQUcsb0JBQW9CLENBQUM7Ozs7Ozs7Ozs7O0lBVWpCLE1BQU07QUFFWixhQUZNLE1BQU0sR0FFMkI7WUFBdEMsT0FBTyx5REFBRyxFQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksSUFBSSxFQUFFLEVBQUM7OzhCQUYvQixNQUFNOztBQUduQix1QkFBYyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDaEM7Ozs7Ozs7OztpQkFKZ0IsTUFBTTs7ZUFZZixrQkFBQyxNQUFNLEVBQUU7Ozs7O0FBQ2IsZ0JBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7QUFDbEIsZ0JBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7QUFDckIsZ0JBQUksS0FBSyxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUEsQ0FBRSxNQUFNLENBQUMsVUFBVSxLQUFLLEVBQUUsSUFBSSxFQUFFO0FBQ3JFLG9CQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ25CLG9CQUFJLHNCQUFzQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUNuQyx5QkFBSyxDQUFDLElBQUksQ0FBQyxzQkFBUyxFQUFDLEdBQUcsRUFBSCxHQUFHLEVBQUUsSUFBSSxFQUFKLElBQUksRUFBRSxJQUFJLEVBQUosSUFBSSxFQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUMzQzs7QUFFRCx1QkFBTyxLQUFLLENBQUM7YUFDaEIsRUFBRSxFQUFFLENBQUMsQ0FBQzs7QUFFUCxtQkFBTyxTQUFRLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFVBQUMsSUFBSTt1QkFBSyxJQUFJLENBQUMsSUFBSSxFQUFFO2FBQUEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQUMsS0FBSzt1QkFBSyxNQUFLLEtBQUssR0FBRyxLQUFLO2FBQUEsQ0FBQyxDQUFDO1NBQzVGOzs7Ozs7Ozs7O2VBUVUsY0FBQyxHQUFHLEVBQUU7cUNBQ0ksR0FBRyxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQzs7OztnQkFBdEQsRUFBRTtnQkFBRSxJQUFJOztBQUViLGdCQUFJLEVBQUUsSUFBSSxJQUFJLEVBQUU7QUFDWix1QkFBTyxJQUFJLE1BQU0sQ0FBQyxFQUFDLEVBQUUsRUFBRixFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFDLENBQUMsQ0FBQzthQUNqRDs7QUFFRCxtQkFBTyxJQUFJLENBQUM7U0FDZjs7Ozs7Ozs7Ozs7ZUFTZ0Isb0JBQUMsSUFBSSxFQUFFLEtBQUssRUFBRTtBQUMzQixtQkFBTyxTQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsV0FBVyxHQUFHLElBQUksRUFBRSxZQUFZLEdBQUcsS0FBSyxHQUFHLElBQUksRUFBRSx3QkFBd0IsQ0FBQyxDQUMzRixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzNCOzs7Ozs7Ozs7O2VBUWMsa0JBQUMsT0FBTyxFQUFFO0FBQ3JCLG1CQUFPLFNBQVEsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxNQUFNLEVBQUU7QUFDN0MsdUJBQU8sU0FBSSxHQUFHLENBQ1YsTUFBTSxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQ2pCLGtCQUFrQixFQUFFLGtCQUFrQixFQUN0QyxhQUFhLEVBQUUsc0JBQXNCLENBQ3hDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7YUFDeEMsQ0FBQyxDQUFDLENBQUM7U0FDUDs7Ozs7Ozs7OztlQVFXLGVBQUMsSUFBSSxFQUFFO0FBQ2YsbUJBQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxHQUFHLEVBQUU7QUFDMUMsdUJBQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUMzQixDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3RCOzs7V0FqRmdCLE1BQU07OztxQkFBTixNQUFNIiwiZmlsZSI6ImNvbW1pdC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGUgY29tbWl0IOWkhOeQhlxuICogQGF1dGhvciBjaHJpczx3ZnNyQGZveG1haWwuY29tPlxuICovXG5cbmltcG9ydCB7Z2l0fSBmcm9tICcuL2dpdCc7XG5pbXBvcnQgRmlsZSBmcm9tICcuL2ZpbGUnO1xuXG4vKipcbiAqIOWMuemFjeaWh+S7tui3r+W+hOeahOato+WImVxuICpcbiAqIEBjb25zdFxuICogQHR5cGUge1JlZ0V4cH1cbiAqL1xuY29uc3QgRklMRV9SRUcgPSAvXlxccypcXFMrKD89XFxzKlxcfCkvZ207XG5cbi8qKlxuICogQ29tbWl0XG4gKlxuICogQGNsYXNzXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyDphY3nva7poblcbiAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLmlkIOaPkOS6pOeahCBpZFxuICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMuZGF0ZSDmj5DkuqTml7bpl7RcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29tbWl0IHtcblxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMgPSB7aWQ6ICcnLCBkYXRlOiBuZXcgRGF0ZSgpfSkge1xuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOS7jiBnaXQtc2hvdyDovpPlh7rkuK3ojrflj5bmj5DkuqTnmoTmlofku7bot6/lvoRcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvdXRwdXQgZ2l0LXNob3cg55qE6L6T5Ye6XG4gICAgICogQHJldHVybiB7UHJvbWlzZS48RmlsZVtdPn1cbiAgICAgKi9cbiAgICBnZXRGaWxlcyhvdXRwdXQpIHtcbiAgICAgICAgbGV0IGNpZCA9IHRoaXMuaWQ7XG4gICAgICAgIGxldCBkYXRlID0gdGhpcy5kYXRlO1xuICAgICAgICBsZXQgZmlsZXMgPSAob3V0cHV0Lm1hdGNoKEZJTEVfUkVHKSB8fCBbXSkucmVkdWNlKGZ1bmN0aW9uIChmaWxlcywgcGF0aCkge1xuICAgICAgICAgICAgcGF0aCA9IHBhdGgudHJpbSgpO1xuICAgICAgICAgICAgaWYgKC8uK1xcLig/OmpzfGNzc3xodG1sKSQvLnRlc3QocGF0aCkpIHtcbiAgICAgICAgICAgICAgICBmaWxlcy5wdXNoKG5ldyBGaWxlKHtjaWQsIHBhdGgsIGRhdGV9KSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBmaWxlcztcbiAgICAgICAgfSwgW10pO1xuXG4gICAgICAgIHJldHVybiBQcm9taXNlLmFsbChmaWxlcy5tYXAoKGZpbGUpID0+IGZpbGUucmVhZCgpKSkudGhlbigoZmlsZXMpID0+IHRoaXMuZmlsZXMgPSBmaWxlcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5LuOIGdpdC1sb2cg6L6T5Ye65Lit5YiG5p6Q55Sf5oiQ5o+Q5Lqk5a6e5L6LXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbG9nIGdpdC1sb2cg55qE6L6T5Ye6XG4gICAgICogQHJldHVybiB7P0NvbW1pdH1cbiAgICAgKi9cbiAgICBzdGF0aWMgZnJvbShsb2cpIHtcbiAgICAgICAgbGV0IFtpZCwgZGF0ZV0gPSBsb2cucmVwbGFjZSgvXFxzKihcXHI/XFxuKSsvZywgJycpLnNwbGl0KCcsJyk7XG5cbiAgICAgICAgaWYgKGlkICYmIGRhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgQ29tbWl0KHtpZCwgZGF0ZTogbmV3IERhdGUoZGF0ZSl9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOS7jiBnaXQtbG9nIOiOt+WPluaMh+WumueUqOaIt+WcqOafkOS4quaXtumXtOauteWGheeahOaJgOaciSBDb21taXRcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIOaPkOS6pOS7o+eggeeahOS9nOiAheWQjeWtl1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzaW5jZSBnaXQg5qC85byP55qE5pe26Ze05q616KGo56S6XG4gICAgICogQHJldHVybiB7UHJvbWlzZS48Q29tbWl0W10+fVxuICAgICAqL1xuICAgIHN0YXRpYyBnZXRDb21taXRzKG5hbWUsIHNpbmNlKSB7XG4gICAgICAgIHJldHVybiBnaXQucnVuKCdsb2cnLCAnLS1hdXRob3I9JyArIG5hbWUsICctLXNpbmNlPVxcJycgKyBzaW5jZSArICdcXCcnLCAnLS1wcmV0dHk9Zm9ybWF0OiVoLCVhZCcpXG4gICAgICAgICAgICAudGhlbihDb21taXQucGFyc2UpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOS7jiBnaXQtc2hvdyDojrflj5bmiYDmnIkgQ29tbWl0IOeahOebuOWFs+aWh+S7tlxuICAgICAqXG4gICAgICogQHBhcmFtIHtDb21taXRbXX0gY29tbWl0cyBDb21taXQg5YiX6KGoXG4gICAgICogQHJldHVybiB7UHJvbWlzZS48QXJyYXkuPEZpbGVbXT4+fVxuICAgICAqL1xuICAgIHN0YXRpYyBnZXRGaWxlcyhjb21taXRzKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLmFsbChjb21taXRzLm1hcChmdW5jdGlvbiAoY29tbWl0KSB7XG4gICAgICAgICAgICByZXR1cm4gZ2l0LnJ1bihcbiAgICAgICAgICAgICAgICAnc2hvdycsIGNvbW1pdC5pZCxcbiAgICAgICAgICAgICAgICAnLS1wcmV0dHk9Zm9ybWF0OicsICctLWRpZmYtZmlsdGVyPUFNJyxcbiAgICAgICAgICAgICAgICAnLS1zdGF0PTEyMDAnLCAnLS1zdGF0LWdyYXBoLXdpZHRoPTEnXG4gICAgICAgICAgICApLnRoZW4oY29tbWl0LmdldEZpbGVzLmJpbmQoY29tbWl0KSk7XG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDop6Pph4rlh7ogQ29tbWl0IOWIl+ihqFxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGxvZ3MgZ2l0LWxvZyDnmoTovpPlh7pcbiAgICAgKiBAcmV0dXJuIHtDb21taXRbXX1cbiAgICAgKi9cbiAgICBzdGF0aWMgcGFyc2UobG9ncykge1xuICAgICAgICByZXR1cm4gbG9ncy5zcGxpdCgvXFxyP1xcbi8pLm1hcChmdW5jdGlvbiAobG9nKSB7XG4gICAgICAgICAgICByZXR1cm4gQ29tbWl0LmZyb20obG9nKTtcbiAgICAgICAgfSkuZmlsdGVyKEJvb2xlYW4pO1xuICAgIH1cblxufVxuIl19</pre></td></tr>
</table></pre>
</div>
<div class="footer">
<div class="meta">Generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Thu Sep 17 2015 10:53:44 GMT+0800 (CST)</div>
</div>
<script src="../prettify.js"></script>
<script>
window.onload = function () {
if (typeof prettyPrint === 'function') {
prettyPrint();
}
};
</script>
<script src="../sorter.js"></script>
</body>
</html>