@jaredwray/fumanchu 2.1.0 → 3.0.1
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.
- package/README.md +50 -16
- package/dist/index.d.ts +64 -0
- package/dist/index.js +2135 -0
- package/package.json +87 -68
- package/site/logo.svg +19 -0
- package/helpers.js +0 -61
- package/index.d.ts +0 -4
- package/index.js +0 -8
- package/lib/array.js +0 -822
- package/lib/code.js +0 -80
- package/lib/collection.js +0 -67
- package/lib/comparison.js +0 -604
- package/lib/date.js +0 -24
- package/lib/fs.js +0 -75
- package/lib/html.js +0 -218
- package/lib/i18n.js +0 -48
- package/lib/index.js +0 -24
- package/lib/inflection.js +0 -78
- package/lib/logging.js +0 -8
- package/lib/markdown.js +0 -99
- package/lib/match.js +0 -61
- package/lib/math.js +0 -285
- package/lib/md.js +0 -119
- package/lib/misc.js +0 -77
- package/lib/number.js +0 -204
- package/lib/object.js +0 -290
- package/lib/path.js +0 -181
- package/lib/regex.js +0 -50
- package/lib/string.js +0 -769
- package/lib/url.js +0 -132
- package/lib/utils/falsey.js +0 -46
- package/lib/utils/html.js +0 -82
- package/lib/utils/index.js +0 -91
- package/lib/utils/utils.js +0 -42
package/dist/index.js
ADDED
|
@@ -0,0 +1,2135 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __commonJS = (cb, mod) => function __require() {
|
|
9
|
+
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
10
|
+
};
|
|
11
|
+
var __export = (target, all) => {
|
|
12
|
+
for (var name in all)
|
|
13
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
14
|
+
};
|
|
15
|
+
var __copyProps = (to, from, except, desc) => {
|
|
16
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
17
|
+
for (let key of __getOwnPropNames(from))
|
|
18
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
19
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
20
|
+
}
|
|
21
|
+
return to;
|
|
22
|
+
};
|
|
23
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
24
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
25
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
26
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
27
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
28
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
29
|
+
mod
|
|
30
|
+
));
|
|
31
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
32
|
+
var __async = (__this, __arguments, generator) => {
|
|
33
|
+
return new Promise((resolve, reject) => {
|
|
34
|
+
var fulfilled = (value) => {
|
|
35
|
+
try {
|
|
36
|
+
step(generator.next(value));
|
|
37
|
+
} catch (e) {
|
|
38
|
+
reject(e);
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
var rejected = (value) => {
|
|
42
|
+
try {
|
|
43
|
+
step(generator.throw(value));
|
|
44
|
+
} catch (e) {
|
|
45
|
+
reject(e);
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
49
|
+
step((generator = generator.apply(__this, __arguments)).next());
|
|
50
|
+
});
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
// helpers/lib/utils/falsey.js
|
|
54
|
+
var require_falsey = __commonJS({
|
|
55
|
+
"helpers/lib/utils/falsey.js"(exports2, module2) {
|
|
56
|
+
"use strict";
|
|
57
|
+
function falsey(val, keywords) {
|
|
58
|
+
if (!val) {
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
let words = keywords || [
|
|
62
|
+
"0",
|
|
63
|
+
"false",
|
|
64
|
+
"nada",
|
|
65
|
+
"nil",
|
|
66
|
+
"nay",
|
|
67
|
+
"nah",
|
|
68
|
+
"negative",
|
|
69
|
+
"no",
|
|
70
|
+
"none",
|
|
71
|
+
"nope",
|
|
72
|
+
"nul",
|
|
73
|
+
"null",
|
|
74
|
+
"nix",
|
|
75
|
+
"nyet",
|
|
76
|
+
"uh-uh",
|
|
77
|
+
"veto",
|
|
78
|
+
"zero"
|
|
79
|
+
];
|
|
80
|
+
if (!Array.isArray(words)) {
|
|
81
|
+
words = [words];
|
|
82
|
+
}
|
|
83
|
+
const lower = typeof val === "string" ? val.toLowerCase() : null;
|
|
84
|
+
for (const word of words) {
|
|
85
|
+
if (word === val) {
|
|
86
|
+
return true;
|
|
87
|
+
}
|
|
88
|
+
if (word === lower) {
|
|
89
|
+
return true;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
module2.exports = falsey;
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
// helpers/lib/utils/utils.js
|
|
99
|
+
var require_utils = __commonJS({
|
|
100
|
+
"helpers/lib/utils/utils.js"(exports2, module2) {
|
|
101
|
+
"use strict";
|
|
102
|
+
var utils = require("lazy-cache")(require);
|
|
103
|
+
var falsey = require_falsey();
|
|
104
|
+
var fn = require;
|
|
105
|
+
require = utils;
|
|
106
|
+
require("array-sort", "sortBy");
|
|
107
|
+
require("arr-flatten", "flatten");
|
|
108
|
+
require("to-gfm-code-block", "block");
|
|
109
|
+
require("html-tag", "tag");
|
|
110
|
+
require("kind-of", "typeOf");
|
|
111
|
+
require("is-glob");
|
|
112
|
+
require("micromatch", "mm");
|
|
113
|
+
utils.falsey = falsey;
|
|
114
|
+
require("is-even");
|
|
115
|
+
require("is-number");
|
|
116
|
+
require("create-frame");
|
|
117
|
+
require("get-object");
|
|
118
|
+
require("get-value", "get");
|
|
119
|
+
require("for-own");
|
|
120
|
+
require("relative");
|
|
121
|
+
require = fn;
|
|
122
|
+
module2.exports = utils;
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
// helpers/lib/utils/index.js
|
|
127
|
+
var require_utils2 = __commonJS({
|
|
128
|
+
"helpers/lib/utils/index.js"(exports2, module2) {
|
|
129
|
+
"use strict";
|
|
130
|
+
var util = require("handlebars-utils");
|
|
131
|
+
var utils = require_utils();
|
|
132
|
+
utils.contains = function(val, obj, start) {
|
|
133
|
+
if (val == null || obj == null || !utils.isNumber(val.length)) {
|
|
134
|
+
return false;
|
|
135
|
+
}
|
|
136
|
+
return val.indexOf(obj, start) !== -1;
|
|
137
|
+
};
|
|
138
|
+
utils.chop = function(str) {
|
|
139
|
+
if (!util.isString(str)) return "";
|
|
140
|
+
var re = /^[-_.\W\s]+|[-_.\W\s]+$/g;
|
|
141
|
+
if (str.length > 1e3) {
|
|
142
|
+
throw new Error("utils.chop() regex is too long!");
|
|
143
|
+
}
|
|
144
|
+
return str.trim().replace(re, "");
|
|
145
|
+
};
|
|
146
|
+
utils.changecase = function(str, fn) {
|
|
147
|
+
if (!util.isString(str)) return "";
|
|
148
|
+
if (str.length === 1) {
|
|
149
|
+
return str.toLowerCase();
|
|
150
|
+
}
|
|
151
|
+
str = utils.chop(str).toLowerCase();
|
|
152
|
+
if (typeof fn !== "function") {
|
|
153
|
+
fn = utils.identity;
|
|
154
|
+
}
|
|
155
|
+
var re = /[-_.\W\s]+(\w|$)/g;
|
|
156
|
+
return str.replace(re, function(_, ch) {
|
|
157
|
+
return fn(ch);
|
|
158
|
+
});
|
|
159
|
+
};
|
|
160
|
+
utils.random = function(min, max) {
|
|
161
|
+
return min + Math.floor(Math.random() * (max - min + 1));
|
|
162
|
+
};
|
|
163
|
+
module2.exports = utils;
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
|
|
167
|
+
// helpers/lib/array.js
|
|
168
|
+
var require_array = __commonJS({
|
|
169
|
+
"helpers/lib/array.js"(exports2, module2) {
|
|
170
|
+
"use strict";
|
|
171
|
+
var util = require("handlebars-utils");
|
|
172
|
+
var utils = require_utils2();
|
|
173
|
+
var helpers3 = module2.exports;
|
|
174
|
+
helpers3.after = function(array, n) {
|
|
175
|
+
if (util.isUndefined(array)) return "";
|
|
176
|
+
return array.slice(n);
|
|
177
|
+
};
|
|
178
|
+
helpers3.arrayify = function(value) {
|
|
179
|
+
return value ? Array.isArray(value) ? value : [value] : [];
|
|
180
|
+
};
|
|
181
|
+
helpers3.before = function(array, n) {
|
|
182
|
+
if (util.isUndefined(array)) return "";
|
|
183
|
+
return array.slice(0, -n);
|
|
184
|
+
};
|
|
185
|
+
helpers3.eachIndex = function(array, options) {
|
|
186
|
+
var result = "";
|
|
187
|
+
for (var i = 0; i < array.length; i++) {
|
|
188
|
+
result += options.fn({ item: array[i], index: i });
|
|
189
|
+
}
|
|
190
|
+
return result;
|
|
191
|
+
};
|
|
192
|
+
helpers3.filter = function(array, value, options) {
|
|
193
|
+
var content = "";
|
|
194
|
+
var results = [];
|
|
195
|
+
var prop = options.hash && (options.hash.property || options.hash.prop);
|
|
196
|
+
if (prop) {
|
|
197
|
+
results = array.filter(function(val) {
|
|
198
|
+
return value === utils.get(val, prop);
|
|
199
|
+
});
|
|
200
|
+
} else {
|
|
201
|
+
results = array.filter(function(v) {
|
|
202
|
+
return value === v;
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
if (results && results.length > 0) {
|
|
206
|
+
for (var i = 0; i < results.length; i++) {
|
|
207
|
+
content += options.fn(results[i]);
|
|
208
|
+
}
|
|
209
|
+
return content;
|
|
210
|
+
}
|
|
211
|
+
return options.inverse(this);
|
|
212
|
+
};
|
|
213
|
+
helpers3.first = function(array, n) {
|
|
214
|
+
if (util.isUndefined(array)) return "";
|
|
215
|
+
if (!utils.isNumber(n)) {
|
|
216
|
+
return array[0];
|
|
217
|
+
}
|
|
218
|
+
return array.slice(0, n);
|
|
219
|
+
};
|
|
220
|
+
helpers3.forEach = function(array, options) {
|
|
221
|
+
var data = utils.createFrame(options, options.hash);
|
|
222
|
+
var len = array.length;
|
|
223
|
+
var buffer = "";
|
|
224
|
+
var i = -1;
|
|
225
|
+
while (++i < len) {
|
|
226
|
+
var item = array[i];
|
|
227
|
+
data.index = i;
|
|
228
|
+
item.index = i + 1;
|
|
229
|
+
item.total = len;
|
|
230
|
+
item.isFirst = i === 0;
|
|
231
|
+
item.isLast = i === len - 1;
|
|
232
|
+
buffer += options.fn(item, { data });
|
|
233
|
+
}
|
|
234
|
+
return buffer;
|
|
235
|
+
};
|
|
236
|
+
helpers3.inArray = function(array, value, options) {
|
|
237
|
+
return util.value(util.indexOf(array, value) > -1, this, options);
|
|
238
|
+
};
|
|
239
|
+
helpers3.isArray = function(value) {
|
|
240
|
+
return Array.isArray(value);
|
|
241
|
+
};
|
|
242
|
+
helpers3.itemAt = function(array, idx) {
|
|
243
|
+
array = util.result(array);
|
|
244
|
+
if (Array.isArray(array)) {
|
|
245
|
+
idx = utils.isNumber(idx) ? +idx : 0;
|
|
246
|
+
if (idx < 0) {
|
|
247
|
+
return array[array.length + idx];
|
|
248
|
+
}
|
|
249
|
+
if (idx < array.length) {
|
|
250
|
+
return array[idx];
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
};
|
|
254
|
+
helpers3.join = function(array, separator) {
|
|
255
|
+
if (typeof array === "string") return array;
|
|
256
|
+
if (!Array.isArray(array)) return "";
|
|
257
|
+
separator = util.isString(separator) ? separator : ", ";
|
|
258
|
+
return array.join(separator);
|
|
259
|
+
};
|
|
260
|
+
helpers3.equalsLength = function(value, length, options) {
|
|
261
|
+
if (util.isOptions(length)) {
|
|
262
|
+
options = length;
|
|
263
|
+
length = 0;
|
|
264
|
+
}
|
|
265
|
+
var len = 0;
|
|
266
|
+
if (typeof value === "string" || Array.isArray(value)) {
|
|
267
|
+
len = value.length;
|
|
268
|
+
}
|
|
269
|
+
return util.value(len === length, this, options);
|
|
270
|
+
};
|
|
271
|
+
helpers3.last = function(value, n) {
|
|
272
|
+
if (!Array.isArray(value) && typeof value !== "string") {
|
|
273
|
+
return "";
|
|
274
|
+
}
|
|
275
|
+
if (!utils.isNumber(n)) {
|
|
276
|
+
return value[value.length - 1];
|
|
277
|
+
}
|
|
278
|
+
return value.slice(-Math.abs(n));
|
|
279
|
+
};
|
|
280
|
+
helpers3.length = function(value) {
|
|
281
|
+
if (util.isObject(value) && !util.isOptions(value)) {
|
|
282
|
+
value = Object.keys(value);
|
|
283
|
+
}
|
|
284
|
+
if (typeof value === "string" || Array.isArray(value)) {
|
|
285
|
+
return value.length;
|
|
286
|
+
}
|
|
287
|
+
return 0;
|
|
288
|
+
};
|
|
289
|
+
helpers3.lengthEqual = helpers3.equalsLength;
|
|
290
|
+
helpers3.map = function(array, iter) {
|
|
291
|
+
if (!Array.isArray(array)) return "";
|
|
292
|
+
var len = array.length;
|
|
293
|
+
var res = new Array(len);
|
|
294
|
+
var i = -1;
|
|
295
|
+
if (typeof iter !== "function") {
|
|
296
|
+
return array;
|
|
297
|
+
}
|
|
298
|
+
while (++i < len) {
|
|
299
|
+
res[i] = iter(array[i], i, array);
|
|
300
|
+
}
|
|
301
|
+
return res;
|
|
302
|
+
};
|
|
303
|
+
helpers3.pluck = function(arr, prop) {
|
|
304
|
+
if (util.isUndefined(arr)) return "";
|
|
305
|
+
var res = [];
|
|
306
|
+
for (var i = 0; i < arr.length; i++) {
|
|
307
|
+
var val = utils.get(arr[i], prop);
|
|
308
|
+
if (typeof val !== "undefined") {
|
|
309
|
+
res.push(val);
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
return res;
|
|
313
|
+
};
|
|
314
|
+
helpers3.reverse = function(val) {
|
|
315
|
+
if (Array.isArray(val)) {
|
|
316
|
+
val.reverse();
|
|
317
|
+
return val;
|
|
318
|
+
}
|
|
319
|
+
if (val && typeof val === "string") {
|
|
320
|
+
return val.split("").reverse().join("");
|
|
321
|
+
}
|
|
322
|
+
};
|
|
323
|
+
helpers3.some = function(array, iter, options) {
|
|
324
|
+
if (Array.isArray(array)) {
|
|
325
|
+
for (var i = 0; i < array.length; i++) {
|
|
326
|
+
if (iter(array[i], i, array)) {
|
|
327
|
+
return options.fn(this);
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
return options.inverse(this);
|
|
332
|
+
};
|
|
333
|
+
helpers3.sort = function(array, options) {
|
|
334
|
+
if (!Array.isArray(array)) return "";
|
|
335
|
+
if (utils.get(options, "hash.reverse")) {
|
|
336
|
+
return array.sort().reverse();
|
|
337
|
+
}
|
|
338
|
+
return array.sort();
|
|
339
|
+
};
|
|
340
|
+
helpers3.sortBy = function(array, prop, options) {
|
|
341
|
+
if (!Array.isArray(array)) return "";
|
|
342
|
+
var args = [].slice.call(arguments);
|
|
343
|
+
args.pop();
|
|
344
|
+
if (!util.isString(prop) && typeof prop !== "function") {
|
|
345
|
+
return array.sort();
|
|
346
|
+
}
|
|
347
|
+
return utils.sortBy.apply(null, args);
|
|
348
|
+
};
|
|
349
|
+
helpers3.withAfter = function(array, idx, options) {
|
|
350
|
+
if (!Array.isArray(array)) return "";
|
|
351
|
+
array = array.slice(idx);
|
|
352
|
+
var result = "";
|
|
353
|
+
for (var i = 0; i < array.length; i++) {
|
|
354
|
+
result += options.fn(array[i]);
|
|
355
|
+
}
|
|
356
|
+
return result;
|
|
357
|
+
};
|
|
358
|
+
helpers3.withBefore = function(array, idx, options) {
|
|
359
|
+
if (!Array.isArray(array)) return "";
|
|
360
|
+
array = array.slice(0, -idx);
|
|
361
|
+
var result = "";
|
|
362
|
+
for (var i = 0; i < array.length; i++) {
|
|
363
|
+
result += options.fn(array[i]);
|
|
364
|
+
}
|
|
365
|
+
return result;
|
|
366
|
+
};
|
|
367
|
+
helpers3.withFirst = function(array, idx, options) {
|
|
368
|
+
if (util.isUndefined(array)) return "";
|
|
369
|
+
array = util.result(array);
|
|
370
|
+
if (!util.isUndefined(idx)) {
|
|
371
|
+
idx = parseFloat(util.result(idx));
|
|
372
|
+
}
|
|
373
|
+
if (util.isUndefined(idx)) {
|
|
374
|
+
options = idx;
|
|
375
|
+
return options.fn(array[0]);
|
|
376
|
+
}
|
|
377
|
+
array = array.slice(0, idx);
|
|
378
|
+
var result = "";
|
|
379
|
+
for (var i = 0; i < array.length; i++) {
|
|
380
|
+
result += options.fn(array[i]);
|
|
381
|
+
}
|
|
382
|
+
return result;
|
|
383
|
+
};
|
|
384
|
+
helpers3.withGroup = function(array, size, options) {
|
|
385
|
+
var result = "";
|
|
386
|
+
if (Array.isArray(array) && array.length > 0) {
|
|
387
|
+
var subcontext = [];
|
|
388
|
+
for (var i = 0; i < array.length; i++) {
|
|
389
|
+
if (i > 0 && i % size === 0) {
|
|
390
|
+
result += options.fn(subcontext);
|
|
391
|
+
subcontext = [];
|
|
392
|
+
}
|
|
393
|
+
subcontext.push(array[i]);
|
|
394
|
+
}
|
|
395
|
+
result += options.fn(subcontext);
|
|
396
|
+
}
|
|
397
|
+
return result;
|
|
398
|
+
};
|
|
399
|
+
helpers3.withLast = function(array, idx, options) {
|
|
400
|
+
if (util.isUndefined(array)) return "";
|
|
401
|
+
array = util.result(array);
|
|
402
|
+
if (!util.isUndefined(idx)) {
|
|
403
|
+
idx = parseFloat(util.result(idx));
|
|
404
|
+
}
|
|
405
|
+
if (util.isUndefined(idx)) {
|
|
406
|
+
options = idx;
|
|
407
|
+
return options.fn(array[array.length - 1]);
|
|
408
|
+
}
|
|
409
|
+
array = array.slice(-idx);
|
|
410
|
+
var len = array.length, i = -1;
|
|
411
|
+
var result = "";
|
|
412
|
+
while (++i < len) {
|
|
413
|
+
result += options.fn(array[i]);
|
|
414
|
+
}
|
|
415
|
+
return result;
|
|
416
|
+
};
|
|
417
|
+
helpers3.withSort = function(array, prop, options) {
|
|
418
|
+
if (util.isUndefined(array)) return "";
|
|
419
|
+
var result = "";
|
|
420
|
+
if (util.isUndefined(prop)) {
|
|
421
|
+
options = prop;
|
|
422
|
+
array = array.sort();
|
|
423
|
+
if (utils.get(options, "hash.reverse")) {
|
|
424
|
+
array = array.reverse();
|
|
425
|
+
}
|
|
426
|
+
for (var i = 0, len = array.length; i < len; i++) {
|
|
427
|
+
result += options.fn(array[i]);
|
|
428
|
+
}
|
|
429
|
+
return result;
|
|
430
|
+
}
|
|
431
|
+
array.sort(function(a, b) {
|
|
432
|
+
a = utils.get(a, prop);
|
|
433
|
+
b = utils.get(b, prop);
|
|
434
|
+
return a > b ? 1 : a < b ? -1 : 0;
|
|
435
|
+
});
|
|
436
|
+
if (utils.get(options, "hash.reverse")) {
|
|
437
|
+
array = array.reverse();
|
|
438
|
+
}
|
|
439
|
+
var alen = array.length, j = -1;
|
|
440
|
+
while (++j < alen) {
|
|
441
|
+
result += options.fn(array[j]);
|
|
442
|
+
}
|
|
443
|
+
return result;
|
|
444
|
+
};
|
|
445
|
+
helpers3.unique = function(array, options) {
|
|
446
|
+
if (util.isUndefined(array)) return "";
|
|
447
|
+
return array.filter(function(item, index, arr) {
|
|
448
|
+
return arr.indexOf(item) === index;
|
|
449
|
+
});
|
|
450
|
+
};
|
|
451
|
+
}
|
|
452
|
+
});
|
|
453
|
+
|
|
454
|
+
// helpers/lib/code.js
|
|
455
|
+
var require_code = __commonJS({
|
|
456
|
+
"helpers/lib/code.js"(exports2, module2) {
|
|
457
|
+
"use strict";
|
|
458
|
+
var fs = require("fs");
|
|
459
|
+
var path = require("path");
|
|
460
|
+
var utils = require_utils2();
|
|
461
|
+
var helpers3 = module2.exports;
|
|
462
|
+
helpers3.embed = function embed(filepath, ext) {
|
|
463
|
+
ext = typeof ext !== "string" ? path.extname(filepath).slice(1) : ext;
|
|
464
|
+
var code = fs.readFileSync(filepath, "utf8");
|
|
465
|
+
if (ext === "markdown" || ext === "md") {
|
|
466
|
+
ext = "markdown";
|
|
467
|
+
code = code.split("`").join("`");
|
|
468
|
+
}
|
|
469
|
+
return utils.block(code, ext).trim() + "\n";
|
|
470
|
+
};
|
|
471
|
+
helpers3.gist = function(id) {
|
|
472
|
+
return utils.tag("script", { src: "https://gist.github.com/" + id + ".js" });
|
|
473
|
+
};
|
|
474
|
+
helpers3.jsfiddle = function jsFiddle(options) {
|
|
475
|
+
var attr = Object.assign({}, options && options.hash);
|
|
476
|
+
if (typeof attr.id === "undefined") {
|
|
477
|
+
throw new Error("jsfiddle helper expects an `id`");
|
|
478
|
+
}
|
|
479
|
+
attr.id = "http://jsfiddle.net/" + attr.id;
|
|
480
|
+
attr.width = attr.width || "100%";
|
|
481
|
+
attr.height = attr.height || "300";
|
|
482
|
+
attr.skin = attr.skin || "/presentation/";
|
|
483
|
+
attr.tabs = (attr.tabs || "result,js,html,css") + attr.skin;
|
|
484
|
+
attr.src = attr.id + "/embedded/" + attr.tabs;
|
|
485
|
+
attr.allowfullscreen = attr.allowfullscreen || "allowfullscreen";
|
|
486
|
+
attr.frameborder = attr.frameborder || "0";
|
|
487
|
+
delete attr.tabs;
|
|
488
|
+
delete attr.skin;
|
|
489
|
+
delete attr.id;
|
|
490
|
+
return utils.tag("iframe", attr);
|
|
491
|
+
};
|
|
492
|
+
}
|
|
493
|
+
});
|
|
494
|
+
|
|
495
|
+
// helpers/lib/object.js
|
|
496
|
+
var require_object = __commonJS({
|
|
497
|
+
"helpers/lib/object.js"(exports2, module2) {
|
|
498
|
+
"use strict";
|
|
499
|
+
var hasOwn = Object.hasOwnProperty;
|
|
500
|
+
var util = require("handlebars-utils");
|
|
501
|
+
var array = require_array();
|
|
502
|
+
var utils = require_utils2();
|
|
503
|
+
var helpers3 = module2.exports;
|
|
504
|
+
helpers3.extend = function() {
|
|
505
|
+
var args = [].slice.call(arguments);
|
|
506
|
+
var opts = {};
|
|
507
|
+
if (util.isOptions(args[args.length - 1])) {
|
|
508
|
+
opts = args.pop().hash;
|
|
509
|
+
args.push(opts);
|
|
510
|
+
}
|
|
511
|
+
var context = {};
|
|
512
|
+
for (var i = 0; i < args.length; i++) {
|
|
513
|
+
var obj = args[i];
|
|
514
|
+
if (util.isObject(obj)) {
|
|
515
|
+
var keys = Object.keys(obj);
|
|
516
|
+
for (var j = 0; j < keys.length; j++) {
|
|
517
|
+
var key = keys[j];
|
|
518
|
+
context[key] = obj[key];
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
}
|
|
522
|
+
return context;
|
|
523
|
+
};
|
|
524
|
+
helpers3.forIn = function(obj, options) {
|
|
525
|
+
if (!util.isOptions(options)) {
|
|
526
|
+
return obj.inverse(this);
|
|
527
|
+
}
|
|
528
|
+
var data = utils.createFrame(options, options.hash);
|
|
529
|
+
var result = "";
|
|
530
|
+
for (var key in obj) {
|
|
531
|
+
data.key = key;
|
|
532
|
+
result += options.fn(obj[key], { data });
|
|
533
|
+
}
|
|
534
|
+
return result;
|
|
535
|
+
};
|
|
536
|
+
helpers3.forOwn = function(obj, options) {
|
|
537
|
+
if (!util.isOptions(options)) {
|
|
538
|
+
return obj.inverse(this);
|
|
539
|
+
}
|
|
540
|
+
var data = utils.createFrame(options, options.hash);
|
|
541
|
+
var result = "";
|
|
542
|
+
for (var key in obj) {
|
|
543
|
+
if (obj.hasOwnProperty(key)) {
|
|
544
|
+
data.key = key;
|
|
545
|
+
result += options.fn(obj[key], { data });
|
|
546
|
+
}
|
|
547
|
+
}
|
|
548
|
+
return result;
|
|
549
|
+
};
|
|
550
|
+
helpers3.toPath = function() {
|
|
551
|
+
var prop = [];
|
|
552
|
+
for (var i = 0; i < arguments.length; i++) {
|
|
553
|
+
if (typeof arguments[i] === "string" || typeof arguments[i] === "number") {
|
|
554
|
+
prop.push(arguments[i]);
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
return prop.join(".");
|
|
558
|
+
};
|
|
559
|
+
helpers3.get = function(prop, context, options) {
|
|
560
|
+
var val = utils.get(context, prop);
|
|
561
|
+
if (options && options.fn) {
|
|
562
|
+
return val ? options.fn(val) : options.inverse(context);
|
|
563
|
+
}
|
|
564
|
+
return val;
|
|
565
|
+
};
|
|
566
|
+
helpers3.getObject = function(prop, context) {
|
|
567
|
+
return utils.getObject(context, prop);
|
|
568
|
+
};
|
|
569
|
+
helpers3.hasOwn = function(context, key) {
|
|
570
|
+
return hasOwn.call(context, key);
|
|
571
|
+
};
|
|
572
|
+
helpers3.isObject = function(value) {
|
|
573
|
+
return utils.typeOf(value) === "object";
|
|
574
|
+
};
|
|
575
|
+
helpers3.JSONparse = function(str, options) {
|
|
576
|
+
return JSON.parse(str);
|
|
577
|
+
};
|
|
578
|
+
helpers3.JSONstringify = function(obj, indent) {
|
|
579
|
+
if (!utils.isNumber(indent)) {
|
|
580
|
+
indent = 0;
|
|
581
|
+
}
|
|
582
|
+
return JSON.stringify(obj, null, indent);
|
|
583
|
+
};
|
|
584
|
+
helpers3.merge = function(context) {
|
|
585
|
+
var args = [].slice.call(arguments);
|
|
586
|
+
var opts = {};
|
|
587
|
+
if (util.isOptions(args[args.length - 1])) {
|
|
588
|
+
opts = args.pop().hash;
|
|
589
|
+
args.push(opts);
|
|
590
|
+
}
|
|
591
|
+
return Object.assign.apply(null, args);
|
|
592
|
+
};
|
|
593
|
+
helpers3.parseJSON = helpers3.JSONparse;
|
|
594
|
+
helpers3.pick = function(props, context, options) {
|
|
595
|
+
var keys = array.arrayify(props);
|
|
596
|
+
var len = keys.length, i = -1;
|
|
597
|
+
var result = {};
|
|
598
|
+
while (++i < len) {
|
|
599
|
+
result = helpers3.extend({}, result, utils.getObject(context, keys[i]));
|
|
600
|
+
}
|
|
601
|
+
if (options.fn) {
|
|
602
|
+
if (Object.keys(result).length) {
|
|
603
|
+
return options.fn(result);
|
|
604
|
+
}
|
|
605
|
+
return options.inverse(context);
|
|
606
|
+
}
|
|
607
|
+
return result;
|
|
608
|
+
};
|
|
609
|
+
helpers3.stringify = helpers3.JSONstringify;
|
|
610
|
+
}
|
|
611
|
+
});
|
|
612
|
+
|
|
613
|
+
// helpers/lib/collection.js
|
|
614
|
+
var require_collection = __commonJS({
|
|
615
|
+
"helpers/lib/collection.js"(exports2, module2) {
|
|
616
|
+
"use strict";
|
|
617
|
+
var util = require("handlebars-utils");
|
|
618
|
+
var object = require_object();
|
|
619
|
+
var array = require_array();
|
|
620
|
+
var forEach = array.forEach;
|
|
621
|
+
var forOwn = object.forOwn;
|
|
622
|
+
var helpers3 = module2.exports;
|
|
623
|
+
helpers3.isEmpty = function(collection, options) {
|
|
624
|
+
if (!util.isOptions(options)) {
|
|
625
|
+
options = collection;
|
|
626
|
+
return util.fn(true, this, options);
|
|
627
|
+
}
|
|
628
|
+
if (Array.isArray(collection) && !collection.length) {
|
|
629
|
+
return util.fn(true, this, options);
|
|
630
|
+
}
|
|
631
|
+
var keys = Object.keys(collection);
|
|
632
|
+
var isEmpty = typeof collection === "object" && !keys.length;
|
|
633
|
+
return util.value(isEmpty, this, options);
|
|
634
|
+
};
|
|
635
|
+
helpers3.iterate = function(collection, options) {
|
|
636
|
+
if (Array.isArray(collection)) {
|
|
637
|
+
return forEach.apply(null, arguments);
|
|
638
|
+
}
|
|
639
|
+
if (util.isObject(collection)) {
|
|
640
|
+
return forOwn.apply(null, arguments);
|
|
641
|
+
}
|
|
642
|
+
return options.inverse(this);
|
|
643
|
+
};
|
|
644
|
+
}
|
|
645
|
+
});
|
|
646
|
+
|
|
647
|
+
// helpers/lib/comparison.js
|
|
648
|
+
var require_comparison = __commonJS({
|
|
649
|
+
"helpers/lib/comparison.js"(exports2, module2) {
|
|
650
|
+
"use strict";
|
|
651
|
+
var has = require("has-value");
|
|
652
|
+
var util = require("handlebars-utils");
|
|
653
|
+
var utils = require_utils2();
|
|
654
|
+
var helpers3 = module2.exports;
|
|
655
|
+
helpers3.and = function() {
|
|
656
|
+
var len = arguments.length - 1;
|
|
657
|
+
var options = arguments[len];
|
|
658
|
+
var val = true;
|
|
659
|
+
for (var i = 0; i < len; i++) {
|
|
660
|
+
if (!arguments[i]) {
|
|
661
|
+
val = false;
|
|
662
|
+
break;
|
|
663
|
+
}
|
|
664
|
+
}
|
|
665
|
+
return util.value(val, this, options);
|
|
666
|
+
};
|
|
667
|
+
helpers3.compare = function(a, operator, b, options) {
|
|
668
|
+
if (arguments.length < 4) {
|
|
669
|
+
throw new Error("handlebars Helper {{compare}} expects 4 arguments");
|
|
670
|
+
}
|
|
671
|
+
var result;
|
|
672
|
+
switch (operator) {
|
|
673
|
+
case "==":
|
|
674
|
+
result = a == b;
|
|
675
|
+
break;
|
|
676
|
+
case "===":
|
|
677
|
+
result = a === b;
|
|
678
|
+
break;
|
|
679
|
+
case "!=":
|
|
680
|
+
result = a != b;
|
|
681
|
+
break;
|
|
682
|
+
case "!==":
|
|
683
|
+
result = a !== b;
|
|
684
|
+
break;
|
|
685
|
+
case "<":
|
|
686
|
+
result = a < b;
|
|
687
|
+
break;
|
|
688
|
+
case ">":
|
|
689
|
+
result = a > b;
|
|
690
|
+
break;
|
|
691
|
+
case "<=":
|
|
692
|
+
result = a <= b;
|
|
693
|
+
break;
|
|
694
|
+
case ">=":
|
|
695
|
+
result = a >= b;
|
|
696
|
+
break;
|
|
697
|
+
case "typeof":
|
|
698
|
+
result = typeof a === b;
|
|
699
|
+
break;
|
|
700
|
+
default: {
|
|
701
|
+
throw new Error("helper {{compare}}: invalid operator: `" + operator + "`");
|
|
702
|
+
}
|
|
703
|
+
}
|
|
704
|
+
return util.value(result, this, options);
|
|
705
|
+
};
|
|
706
|
+
helpers3.contains = function(collection, value, startIndex, options) {
|
|
707
|
+
if (typeof startIndex === "object") {
|
|
708
|
+
options = startIndex;
|
|
709
|
+
startIndex = void 0;
|
|
710
|
+
}
|
|
711
|
+
var val = utils.contains(collection, value, startIndex);
|
|
712
|
+
return util.value(val, this, options);
|
|
713
|
+
};
|
|
714
|
+
helpers3.default = function() {
|
|
715
|
+
for (var i = 0; i < arguments.length - 1; i++) {
|
|
716
|
+
if (arguments[i] != null) return arguments[i];
|
|
717
|
+
}
|
|
718
|
+
return "";
|
|
719
|
+
};
|
|
720
|
+
helpers3.eq = function(a, b, options) {
|
|
721
|
+
if (arguments.length === 2) {
|
|
722
|
+
options = b;
|
|
723
|
+
b = options.hash.compare;
|
|
724
|
+
}
|
|
725
|
+
return util.value(a === b, this, options);
|
|
726
|
+
};
|
|
727
|
+
helpers3.gt = function(a, b, options) {
|
|
728
|
+
if (arguments.length === 2) {
|
|
729
|
+
options = b;
|
|
730
|
+
b = options.hash.compare;
|
|
731
|
+
}
|
|
732
|
+
return util.value(a > b, this, options);
|
|
733
|
+
};
|
|
734
|
+
helpers3.gte = function(a, b, options) {
|
|
735
|
+
if (arguments.length === 2) {
|
|
736
|
+
options = b;
|
|
737
|
+
b = options.hash.compare;
|
|
738
|
+
}
|
|
739
|
+
return util.value(a >= b, this, options);
|
|
740
|
+
};
|
|
741
|
+
helpers3.has = function(value, pattern, options) {
|
|
742
|
+
if (util.isOptions(value)) {
|
|
743
|
+
options = value;
|
|
744
|
+
pattern = null;
|
|
745
|
+
value = null;
|
|
746
|
+
}
|
|
747
|
+
if (util.isOptions(pattern)) {
|
|
748
|
+
options = pattern;
|
|
749
|
+
pattern = null;
|
|
750
|
+
}
|
|
751
|
+
if (value === null) {
|
|
752
|
+
return util.value(false, this, options);
|
|
753
|
+
}
|
|
754
|
+
if (arguments.length === 2) {
|
|
755
|
+
return util.value(has(this, value), this, options);
|
|
756
|
+
}
|
|
757
|
+
if ((Array.isArray(value) || util.isString(value)) && util.isString(pattern)) {
|
|
758
|
+
if (value.indexOf(pattern) > -1) {
|
|
759
|
+
return util.fn(true, this, options);
|
|
760
|
+
}
|
|
761
|
+
}
|
|
762
|
+
if (util.isObject(value) && util.isString(pattern) && pattern in value) {
|
|
763
|
+
return util.fn(true, this, options);
|
|
764
|
+
}
|
|
765
|
+
return util.inverse(false, this, options);
|
|
766
|
+
};
|
|
767
|
+
helpers3.isFalsey = function(val, options) {
|
|
768
|
+
return util.value(utils.falsey(val), this, options);
|
|
769
|
+
};
|
|
770
|
+
helpers3.isTruthy = function(val, options) {
|
|
771
|
+
return util.value(!utils.falsey(val), this, options);
|
|
772
|
+
};
|
|
773
|
+
helpers3.ifEven = function(num, options) {
|
|
774
|
+
return util.value(utils.isEven(num), this, options);
|
|
775
|
+
};
|
|
776
|
+
helpers3.ifNth = function(a, b, options) {
|
|
777
|
+
var isNth = utils.isNumber(a) && utils.isNumber(b) && b % a === 0;
|
|
778
|
+
return util.value(isNth, this, options);
|
|
779
|
+
};
|
|
780
|
+
helpers3.ifOdd = function(val, options) {
|
|
781
|
+
return util.value(!utils.isEven(val), this, options);
|
|
782
|
+
};
|
|
783
|
+
helpers3.is = function(a, b, options) {
|
|
784
|
+
if (arguments.length === 2) {
|
|
785
|
+
options = b;
|
|
786
|
+
b = options.hash.compare;
|
|
787
|
+
}
|
|
788
|
+
return util.value(a == b, this, options);
|
|
789
|
+
};
|
|
790
|
+
helpers3.isnt = function(a, b, options) {
|
|
791
|
+
if (arguments.length === 2) {
|
|
792
|
+
options = b;
|
|
793
|
+
b = options.hash.compare;
|
|
794
|
+
}
|
|
795
|
+
return util.value(a != b, this, options);
|
|
796
|
+
};
|
|
797
|
+
helpers3.lt = function(a, b, options) {
|
|
798
|
+
if (arguments.length === 2) {
|
|
799
|
+
options = b;
|
|
800
|
+
b = options.hash.compare;
|
|
801
|
+
}
|
|
802
|
+
return util.value(a < b, this, options);
|
|
803
|
+
};
|
|
804
|
+
helpers3.lte = function(a, b, options) {
|
|
805
|
+
if (arguments.length === 2) {
|
|
806
|
+
options = b;
|
|
807
|
+
b = options.hash.compare;
|
|
808
|
+
}
|
|
809
|
+
return util.value(a <= b, this, options);
|
|
810
|
+
};
|
|
811
|
+
helpers3.neither = function(a, b, options) {
|
|
812
|
+
return util.value(!a && !b, this, options);
|
|
813
|
+
};
|
|
814
|
+
helpers3.not = function(val, options) {
|
|
815
|
+
return util.value(!val, this, options);
|
|
816
|
+
};
|
|
817
|
+
helpers3.or = function() {
|
|
818
|
+
var len = arguments.length - 1;
|
|
819
|
+
var options = arguments[len];
|
|
820
|
+
var val = false;
|
|
821
|
+
for (var i = 0; i < len; i++) {
|
|
822
|
+
if (arguments[i]) {
|
|
823
|
+
val = true;
|
|
824
|
+
break;
|
|
825
|
+
}
|
|
826
|
+
}
|
|
827
|
+
return util.value(val, this, options);
|
|
828
|
+
};
|
|
829
|
+
helpers3.unlessEq = function(a, b, options) {
|
|
830
|
+
if (util.isOptions(b)) {
|
|
831
|
+
options = b;
|
|
832
|
+
b = options.hash.compare;
|
|
833
|
+
}
|
|
834
|
+
return util.value(a !== b, this, options);
|
|
835
|
+
};
|
|
836
|
+
helpers3.unlessGt = function(a, b, options) {
|
|
837
|
+
if (util.isOptions(b)) {
|
|
838
|
+
options = b;
|
|
839
|
+
b = options.hash.compare;
|
|
840
|
+
}
|
|
841
|
+
return util.value(a <= b, this, options);
|
|
842
|
+
};
|
|
843
|
+
helpers3.unlessLt = function(a, b, options) {
|
|
844
|
+
if (util.isOptions(b)) {
|
|
845
|
+
options = b;
|
|
846
|
+
b = options.hash.compare;
|
|
847
|
+
}
|
|
848
|
+
return util.value(a >= b, this, options);
|
|
849
|
+
};
|
|
850
|
+
helpers3.unlessGteq = function(a, b, options) {
|
|
851
|
+
if (util.isOptions(b)) {
|
|
852
|
+
options = b;
|
|
853
|
+
b = options.hash.compare;
|
|
854
|
+
}
|
|
855
|
+
return util.value(a < b, this, options);
|
|
856
|
+
};
|
|
857
|
+
helpers3.unlessLteq = function(a, b, options) {
|
|
858
|
+
if (util.isOptions(b)) {
|
|
859
|
+
options = b;
|
|
860
|
+
b = options.hash.compare;
|
|
861
|
+
}
|
|
862
|
+
return util.value(a > b, this, options);
|
|
863
|
+
};
|
|
864
|
+
}
|
|
865
|
+
});
|
|
866
|
+
|
|
867
|
+
// helpers/lib/date.js
|
|
868
|
+
var require_date = __commonJS({
|
|
869
|
+
"helpers/lib/date.js"(exports2, module2) {
|
|
870
|
+
"use strict";
|
|
871
|
+
var helpers3 = module2.exports;
|
|
872
|
+
helpers3.year = require("year");
|
|
873
|
+
helpers3.moment = helpers3.date = require("helper-date");
|
|
874
|
+
}
|
|
875
|
+
});
|
|
876
|
+
|
|
877
|
+
// helpers/lib/number.js
|
|
878
|
+
var require_number = __commonJS({
|
|
879
|
+
"helpers/lib/number.js"(exports2, module2) {
|
|
880
|
+
"use strict";
|
|
881
|
+
var isNumber = require("is-number");
|
|
882
|
+
var util = require("handlebars-utils");
|
|
883
|
+
var utils = require_utils2();
|
|
884
|
+
var helpers3 = module2.exports;
|
|
885
|
+
helpers3.bytes = function(number, precision, options) {
|
|
886
|
+
if (number == null) return "0 B";
|
|
887
|
+
if (!utils.isNumber(number)) {
|
|
888
|
+
number = number.length;
|
|
889
|
+
if (!number) return "0 B";
|
|
890
|
+
}
|
|
891
|
+
if (!utils.isNumber(precision)) {
|
|
892
|
+
precision = 2;
|
|
893
|
+
}
|
|
894
|
+
var abbr = ["B", "kB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"];
|
|
895
|
+
precision = Math.pow(10, precision);
|
|
896
|
+
number = Number(number);
|
|
897
|
+
var len = abbr.length - 1;
|
|
898
|
+
while (len-- >= 0) {
|
|
899
|
+
var size = Math.pow(10, len * 3);
|
|
900
|
+
if (size <= number + 1) {
|
|
901
|
+
number = Math.round(number * precision / size) / precision;
|
|
902
|
+
number += " " + abbr[len];
|
|
903
|
+
break;
|
|
904
|
+
}
|
|
905
|
+
}
|
|
906
|
+
return number;
|
|
907
|
+
};
|
|
908
|
+
helpers3.addCommas = function(num) {
|
|
909
|
+
return num.toString().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,");
|
|
910
|
+
};
|
|
911
|
+
helpers3.phoneNumber = function(num) {
|
|
912
|
+
num = num.toString();
|
|
913
|
+
return "(" + num.substr(0, 3) + ") " + num.substr(3, 3) + "-" + num.substr(6, 4);
|
|
914
|
+
};
|
|
915
|
+
helpers3.toAbbr = function(number, precision) {
|
|
916
|
+
if (!utils.isNumber(number)) {
|
|
917
|
+
number = 0;
|
|
918
|
+
}
|
|
919
|
+
if (util.isUndefined(precision)) {
|
|
920
|
+
precision = 2;
|
|
921
|
+
}
|
|
922
|
+
number = Number(number);
|
|
923
|
+
precision = Math.pow(10, precision);
|
|
924
|
+
var abbr = ["k", "m", "b", "t", "q"];
|
|
925
|
+
var len = abbr.length - 1;
|
|
926
|
+
while (len >= 0) {
|
|
927
|
+
var size = Math.pow(10, (len + 1) * 3);
|
|
928
|
+
if (size <= number + 1) {
|
|
929
|
+
number = Math.round(number * precision / size) / precision;
|
|
930
|
+
number += abbr[len];
|
|
931
|
+
break;
|
|
932
|
+
}
|
|
933
|
+
len--;
|
|
934
|
+
}
|
|
935
|
+
return number;
|
|
936
|
+
};
|
|
937
|
+
helpers3.toExponential = function(number, digits) {
|
|
938
|
+
if (!utils.isNumber(number)) {
|
|
939
|
+
number = 0;
|
|
940
|
+
}
|
|
941
|
+
if (util.isUndefined(digits)) {
|
|
942
|
+
digits = 0;
|
|
943
|
+
}
|
|
944
|
+
return Number(number).toExponential(digits);
|
|
945
|
+
};
|
|
946
|
+
helpers3.toFixed = function(number, digits) {
|
|
947
|
+
if (!utils.isNumber(number)) {
|
|
948
|
+
number = 0;
|
|
949
|
+
}
|
|
950
|
+
if (!isNumber(digits)) {
|
|
951
|
+
digits = 0;
|
|
952
|
+
}
|
|
953
|
+
return Number(number).toFixed(digits);
|
|
954
|
+
};
|
|
955
|
+
helpers3.toFloat = function(number) {
|
|
956
|
+
return parseFloat(number);
|
|
957
|
+
};
|
|
958
|
+
helpers3.toInt = function(number) {
|
|
959
|
+
return parseInt(number, 10);
|
|
960
|
+
};
|
|
961
|
+
helpers3.toPrecision = function(number, precision) {
|
|
962
|
+
if (!utils.isNumber(number)) {
|
|
963
|
+
number = 0;
|
|
964
|
+
}
|
|
965
|
+
if (!isNumber(precision)) {
|
|
966
|
+
precision = 1;
|
|
967
|
+
}
|
|
968
|
+
return Number(number).toPrecision(precision);
|
|
969
|
+
};
|
|
970
|
+
}
|
|
971
|
+
});
|
|
972
|
+
|
|
973
|
+
// helpers/lib/fs.js
|
|
974
|
+
var require_fs = __commonJS({
|
|
975
|
+
"helpers/lib/fs.js"(exports2, module2) {
|
|
976
|
+
"use strict";
|
|
977
|
+
var fs = require("fs");
|
|
978
|
+
var path = require("path");
|
|
979
|
+
var util = require("handlebars-utils");
|
|
980
|
+
var utils = require_utils2();
|
|
981
|
+
var number = require_number();
|
|
982
|
+
var helpers3 = module2.exports;
|
|
983
|
+
helpers3.fileSize = number.bytes;
|
|
984
|
+
helpers3.read = function(filepath, options) {
|
|
985
|
+
return fs.readFileSync(filepath, "utf8");
|
|
986
|
+
};
|
|
987
|
+
helpers3.readdir = function(dir, filter) {
|
|
988
|
+
var files = fs.readdirSync(dir);
|
|
989
|
+
files = files.map(function(fp) {
|
|
990
|
+
return path.join(dir, fp);
|
|
991
|
+
});
|
|
992
|
+
if (util.isOptions(filter)) {
|
|
993
|
+
return files;
|
|
994
|
+
}
|
|
995
|
+
if (typeof filter === "function") {
|
|
996
|
+
return filter(files);
|
|
997
|
+
}
|
|
998
|
+
if (utils.typeOf(filter) === "regexp") {
|
|
999
|
+
return files.filter(function(fp) {
|
|
1000
|
+
return filter.test(fp);
|
|
1001
|
+
});
|
|
1002
|
+
}
|
|
1003
|
+
if (utils.isGlob(filter)) {
|
|
1004
|
+
const isMatch = utils.mm.matcher(filter);
|
|
1005
|
+
const result = [];
|
|
1006
|
+
for (let i = 0; i < files.length; i++) {
|
|
1007
|
+
if (isMatch(files[i])) {
|
|
1008
|
+
result.push(files[i]);
|
|
1009
|
+
}
|
|
1010
|
+
}
|
|
1011
|
+
return result;
|
|
1012
|
+
}
|
|
1013
|
+
if (["isFile", "isDirectory"].indexOf(filter) !== -1) {
|
|
1014
|
+
return files.filter(function(fp) {
|
|
1015
|
+
var stat = fs.statSync(fp);
|
|
1016
|
+
return stat[filter]();
|
|
1017
|
+
});
|
|
1018
|
+
}
|
|
1019
|
+
return files;
|
|
1020
|
+
};
|
|
1021
|
+
}
|
|
1022
|
+
});
|
|
1023
|
+
|
|
1024
|
+
// helpers/lib/utils/html.js
|
|
1025
|
+
var require_html = __commonJS({
|
|
1026
|
+
"helpers/lib/utils/html.js"(exports2, module2) {
|
|
1027
|
+
"use strict";
|
|
1028
|
+
var util = require("handlebars-utils");
|
|
1029
|
+
var striptags = require("striptags");
|
|
1030
|
+
var html = module2.exports;
|
|
1031
|
+
html.condense = function(str) {
|
|
1032
|
+
return str.replace(/(\r\n|\r|\n|\u2028|\u2029) {2,}/g, "\n");
|
|
1033
|
+
};
|
|
1034
|
+
html.padcomments = function(str) {
|
|
1035
|
+
return str.replace(/(\s*<!--)/g, "\n$1");
|
|
1036
|
+
};
|
|
1037
|
+
html.parseAttributes = function parseAttributes(hash) {
|
|
1038
|
+
return Object.keys(hash).map(function(key) {
|
|
1039
|
+
var val = String(hash[key]).replace(/^['"]|["']$/g, "");
|
|
1040
|
+
return key + '="' + val + '"';
|
|
1041
|
+
}).join(" ");
|
|
1042
|
+
};
|
|
1043
|
+
html.sanitize = function(str) {
|
|
1044
|
+
if (!util.isString(str)) return "";
|
|
1045
|
+
return striptags(str).trim();
|
|
1046
|
+
};
|
|
1047
|
+
html.toAttributes = function toAttributes(hash) {
|
|
1048
|
+
var res = "";
|
|
1049
|
+
var keys = Object.keys(hash);
|
|
1050
|
+
for (var i = 0; i < keys.length; i++) {
|
|
1051
|
+
var val = hash[keys[i]];
|
|
1052
|
+
if (val === true) {
|
|
1053
|
+
res += " " + keys[i];
|
|
1054
|
+
} else {
|
|
1055
|
+
res += " " + keys[i] + '="' + String(val) + '"';
|
|
1056
|
+
}
|
|
1057
|
+
}
|
|
1058
|
+
return res;
|
|
1059
|
+
};
|
|
1060
|
+
}
|
|
1061
|
+
});
|
|
1062
|
+
|
|
1063
|
+
// helpers/lib/html.js
|
|
1064
|
+
var require_html2 = __commonJS({
|
|
1065
|
+
"helpers/lib/html.js"(exports2, module2) {
|
|
1066
|
+
"use strict";
|
|
1067
|
+
var path = require("path");
|
|
1068
|
+
var util = require("handlebars-utils");
|
|
1069
|
+
var html = require_html();
|
|
1070
|
+
var utils = require_utils2();
|
|
1071
|
+
var parseAttr = html.parseAttributes;
|
|
1072
|
+
var helpers3 = module2.exports;
|
|
1073
|
+
helpers3.attr = function(options) {
|
|
1074
|
+
var val = parseAttr(options && options.hash || {});
|
|
1075
|
+
return val.trim() ? " " + val : "";
|
|
1076
|
+
};
|
|
1077
|
+
helpers3.css = function(list, options) {
|
|
1078
|
+
if (arguments.length < 2) {
|
|
1079
|
+
options = list;
|
|
1080
|
+
list = [];
|
|
1081
|
+
}
|
|
1082
|
+
var styles = util.arrayify(list);
|
|
1083
|
+
var assets = "";
|
|
1084
|
+
if (this && this.options) {
|
|
1085
|
+
assets = this.options.assets || "";
|
|
1086
|
+
}
|
|
1087
|
+
if (options.hash.href) {
|
|
1088
|
+
styles = util.arrayify(options.hash.href);
|
|
1089
|
+
}
|
|
1090
|
+
return styles.map(function(item) {
|
|
1091
|
+
var ext = path.extname(item);
|
|
1092
|
+
var fp = item;
|
|
1093
|
+
if (!/(^\/\/)|(:\/\/)/.test(item)) {
|
|
1094
|
+
fp = path.posix.join(assets, item);
|
|
1095
|
+
}
|
|
1096
|
+
if (ext === ".less") {
|
|
1097
|
+
return '<link type="text/css" rel="stylesheet/less" href="' + fp + '">';
|
|
1098
|
+
}
|
|
1099
|
+
return '<link type="text/css" rel="stylesheet" href="' + fp + '">';
|
|
1100
|
+
}).join("\n");
|
|
1101
|
+
};
|
|
1102
|
+
helpers3.js = function(context) {
|
|
1103
|
+
if (utils.typeOf(context) === "object") {
|
|
1104
|
+
var attr = parseAttr(context.hash);
|
|
1105
|
+
return "<script" + (attr ? " " + attr : "") + "></script>";
|
|
1106
|
+
}
|
|
1107
|
+
if (utils.typeOf(context) === "string") {
|
|
1108
|
+
return '<script src="' + context + '"></script>';
|
|
1109
|
+
}
|
|
1110
|
+
context = util.arrayify(context);
|
|
1111
|
+
return context.map(function(fp) {
|
|
1112
|
+
return path.extname(fp) === ".coffee" ? utils.tag("script", { type: "text/coffeescript", src: fp }) : utils.tag("script", { src: fp });
|
|
1113
|
+
}).join("\n");
|
|
1114
|
+
};
|
|
1115
|
+
helpers3.sanitize = function(str) {
|
|
1116
|
+
return html.sanitize(str);
|
|
1117
|
+
};
|
|
1118
|
+
helpers3.ul = function(context, options) {
|
|
1119
|
+
return "<ul " + parseAttr(options.hash) + ">" + context.map(function(item) {
|
|
1120
|
+
if (typeof item !== "string") {
|
|
1121
|
+
item = options.fn(item);
|
|
1122
|
+
}
|
|
1123
|
+
return "<li>" + item + "</li>";
|
|
1124
|
+
}).join("\n") + "</ul>";
|
|
1125
|
+
};
|
|
1126
|
+
helpers3.ol = function(context, options) {
|
|
1127
|
+
return "<ol " + parseAttr(options.hash) + ">" + context.map(function(item) {
|
|
1128
|
+
if (typeof item !== "string") {
|
|
1129
|
+
item = options.fn(item);
|
|
1130
|
+
}
|
|
1131
|
+
return "<li>" + item + "</li>";
|
|
1132
|
+
}).join("\n") + "</ol>";
|
|
1133
|
+
};
|
|
1134
|
+
helpers3.thumbnailImage = function(context) {
|
|
1135
|
+
var figure = "";
|
|
1136
|
+
var image = "";
|
|
1137
|
+
var link = context.full || false;
|
|
1138
|
+
var imageAttributes = {
|
|
1139
|
+
alt: context.alt,
|
|
1140
|
+
src: context.thumbnail,
|
|
1141
|
+
width: context.size.width,
|
|
1142
|
+
height: context.size.height
|
|
1143
|
+
};
|
|
1144
|
+
var figureAttributes = { id: "image-" + context.id };
|
|
1145
|
+
var linkAttributes = { href: link, rel: "thumbnail" };
|
|
1146
|
+
if (context.classes) {
|
|
1147
|
+
if (context.classes.image) {
|
|
1148
|
+
imageAttributes.class = context.classes.image.join(" ");
|
|
1149
|
+
}
|
|
1150
|
+
if (context.classes.figure) {
|
|
1151
|
+
figureAttributes.class = context.classes.figure.join(" ");
|
|
1152
|
+
}
|
|
1153
|
+
if (context.classes.link) {
|
|
1154
|
+
linkAttributes.class = context.classes.link.join(" ");
|
|
1155
|
+
}
|
|
1156
|
+
}
|
|
1157
|
+
figure += "<figure " + parseAttr(figureAttributes) + ">\n";
|
|
1158
|
+
image += "<img " + parseAttr(imageAttributes) + ">\n";
|
|
1159
|
+
if (link) {
|
|
1160
|
+
figure += "<a " + parseAttr(linkAttributes) + ">\n" + image + "</a>\n";
|
|
1161
|
+
} else {
|
|
1162
|
+
figure += image;
|
|
1163
|
+
}
|
|
1164
|
+
if (context.caption) {
|
|
1165
|
+
figure += "<figcaption>" + context.caption + "</figcaption>\n";
|
|
1166
|
+
}
|
|
1167
|
+
figure += "</figure>";
|
|
1168
|
+
return figure;
|
|
1169
|
+
};
|
|
1170
|
+
}
|
|
1171
|
+
});
|
|
1172
|
+
|
|
1173
|
+
// helpers/lib/i18n.js
|
|
1174
|
+
var require_i18n = __commonJS({
|
|
1175
|
+
"helpers/lib/i18n.js"(exports2, module2) {
|
|
1176
|
+
"use strict";
|
|
1177
|
+
var util = require("handlebars-utils");
|
|
1178
|
+
var utils = require_utils2();
|
|
1179
|
+
var helpers3 = module2.exports;
|
|
1180
|
+
helpers3.i18n = function(prop, locals, options) {
|
|
1181
|
+
if (util.isOptions(locals)) {
|
|
1182
|
+
options = locals;
|
|
1183
|
+
locals = {};
|
|
1184
|
+
}
|
|
1185
|
+
if (!util.isString(prop)) {
|
|
1186
|
+
throw new Error('{{i18n}} helper expected "key" to be a string');
|
|
1187
|
+
}
|
|
1188
|
+
var opts = util.options(this, locals, options);
|
|
1189
|
+
var context = Object.assign({}, this, opts);
|
|
1190
|
+
var lang = context.language || context.lang;
|
|
1191
|
+
if (!util.isString(lang)) {
|
|
1192
|
+
throw new TypeError('{{i18n}} helper expected "language" to be a string');
|
|
1193
|
+
}
|
|
1194
|
+
var cache = context[lang];
|
|
1195
|
+
if (typeof cache === "undefined") {
|
|
1196
|
+
throw new Error('{{i18n}} helper cannot find language "' + lang + '"');
|
|
1197
|
+
}
|
|
1198
|
+
var result = utils.get(cache, prop);
|
|
1199
|
+
if (typeof result === "undefined") {
|
|
1200
|
+
throw new Error('{{i18n}} helper cannot find property "' + prop + '" for language "' + lang + '"');
|
|
1201
|
+
}
|
|
1202
|
+
return result;
|
|
1203
|
+
};
|
|
1204
|
+
}
|
|
1205
|
+
});
|
|
1206
|
+
|
|
1207
|
+
// helpers/lib/inflection.js
|
|
1208
|
+
var require_inflection = __commonJS({
|
|
1209
|
+
"helpers/lib/inflection.js"(exports2, module2) {
|
|
1210
|
+
"use strict";
|
|
1211
|
+
var util = require("handlebars-utils");
|
|
1212
|
+
var helpers3 = module2.exports;
|
|
1213
|
+
helpers3.inflect = function(count, singular, plural, includeCount) {
|
|
1214
|
+
var word = count > 1 || count === 0 ? plural : singular;
|
|
1215
|
+
if (includeCount === true) {
|
|
1216
|
+
return String(count) + " " + word;
|
|
1217
|
+
} else {
|
|
1218
|
+
return word;
|
|
1219
|
+
}
|
|
1220
|
+
};
|
|
1221
|
+
helpers3.ordinalize = function(val) {
|
|
1222
|
+
var num = Math.abs(Math.round(val));
|
|
1223
|
+
var str = String(val);
|
|
1224
|
+
var res = num % 100;
|
|
1225
|
+
if (util.indexOf([11, 12, 13], res) >= 0) {
|
|
1226
|
+
return str + "th";
|
|
1227
|
+
}
|
|
1228
|
+
switch (num % 10) {
|
|
1229
|
+
case 1:
|
|
1230
|
+
return str + "st";
|
|
1231
|
+
case 2:
|
|
1232
|
+
return str + "nd";
|
|
1233
|
+
case 3:
|
|
1234
|
+
return str + "rd";
|
|
1235
|
+
default: {
|
|
1236
|
+
return str + "th";
|
|
1237
|
+
}
|
|
1238
|
+
}
|
|
1239
|
+
};
|
|
1240
|
+
}
|
|
1241
|
+
});
|
|
1242
|
+
|
|
1243
|
+
// helpers/lib/logging.js
|
|
1244
|
+
var require_logging = __commonJS({
|
|
1245
|
+
"helpers/lib/logging.js"(exports2, module2) {
|
|
1246
|
+
"use strict";
|
|
1247
|
+
module2.exports = require("logging-helpers");
|
|
1248
|
+
}
|
|
1249
|
+
});
|
|
1250
|
+
|
|
1251
|
+
// helpers/lib/md.js
|
|
1252
|
+
var require_md = __commonJS({
|
|
1253
|
+
"helpers/lib/md.js"(exports2, module2) {
|
|
1254
|
+
"use strict";
|
|
1255
|
+
var fs = require("fs");
|
|
1256
|
+
var path = require("path");
|
|
1257
|
+
var { Remarkable } = require("remarkable");
|
|
1258
|
+
var extend = require("extend-shallow");
|
|
1259
|
+
var exists = require("fs-exists-sync");
|
|
1260
|
+
var ent = require("ent");
|
|
1261
|
+
var helper = module2.exports = function(name, options, cb) {
|
|
1262
|
+
if (typeof options === "function") {
|
|
1263
|
+
cb = options;
|
|
1264
|
+
options = {};
|
|
1265
|
+
}
|
|
1266
|
+
if (typeof cb !== "function") {
|
|
1267
|
+
return helper.sync.apply(this, arguments);
|
|
1268
|
+
}
|
|
1269
|
+
if (typeof this === "undefined" || typeof this.app === "undefined") {
|
|
1270
|
+
throw new Error("md async helper expects `app` to be exposed on the context");
|
|
1271
|
+
}
|
|
1272
|
+
var opts = extend({ cwd: process.cwd() }, this.options, options);
|
|
1273
|
+
opts = extend({}, opts, opts.hash);
|
|
1274
|
+
var md = markdown(opts);
|
|
1275
|
+
var filepath = path.resolve(opts.cwd, name);
|
|
1276
|
+
var view;
|
|
1277
|
+
var str = "";
|
|
1278
|
+
if (exists(filepath)) {
|
|
1279
|
+
this.app.create("mdfiles");
|
|
1280
|
+
str = fs.readFileSync(filepath, "utf8");
|
|
1281
|
+
view = this.app.mdfile(filepath, { path: filepath, content: str });
|
|
1282
|
+
} else {
|
|
1283
|
+
view = this.app.find(name);
|
|
1284
|
+
}
|
|
1285
|
+
if (typeof view === "undefined") {
|
|
1286
|
+
cb(null, "");
|
|
1287
|
+
return;
|
|
1288
|
+
}
|
|
1289
|
+
view.content = ent.decode(md.render(view.content));
|
|
1290
|
+
this.app.render(view, this.context, function(err, res) {
|
|
1291
|
+
if (err) return cb(err);
|
|
1292
|
+
cb(null, res.content);
|
|
1293
|
+
});
|
|
1294
|
+
};
|
|
1295
|
+
helper.sync = function(name, options) {
|
|
1296
|
+
var ctx = this || {};
|
|
1297
|
+
var app = ctx.app || {};
|
|
1298
|
+
var opts = extend({ cwd: process.cwd() }, ctx.options, options);
|
|
1299
|
+
opts = extend({}, opts, opts.hash);
|
|
1300
|
+
var md = markdown(opts);
|
|
1301
|
+
var filepath = path.resolve(opts.cwd, name);
|
|
1302
|
+
var view;
|
|
1303
|
+
var html = "";
|
|
1304
|
+
var str = "";
|
|
1305
|
+
if (exists(filepath)) {
|
|
1306
|
+
str = fs.readFileSync(filepath, "utf8");
|
|
1307
|
+
html = ent.decode(md.render(str));
|
|
1308
|
+
} else if (app.views) {
|
|
1309
|
+
view = app.find(name);
|
|
1310
|
+
if (view) {
|
|
1311
|
+
html = view.content = ent.decode(md.render(view.content));
|
|
1312
|
+
}
|
|
1313
|
+
}
|
|
1314
|
+
if (view && typeof view.compile === "function") {
|
|
1315
|
+
view.compile(opts);
|
|
1316
|
+
var data = ctx.cache ? ctx.cache.data : {};
|
|
1317
|
+
ctx = extend({}, data, view.data);
|
|
1318
|
+
return view.fn(ctx);
|
|
1319
|
+
}
|
|
1320
|
+
if (typeof this.compile === "function") {
|
|
1321
|
+
var fn = this.compile(html);
|
|
1322
|
+
return fn(this);
|
|
1323
|
+
}
|
|
1324
|
+
return html;
|
|
1325
|
+
};
|
|
1326
|
+
function markdown(options) {
|
|
1327
|
+
let optsConfig = options || {};
|
|
1328
|
+
optsConfig.breaks = true;
|
|
1329
|
+
optsConfig.html = true;
|
|
1330
|
+
optsConfig.langPrefix = "lang-";
|
|
1331
|
+
optsConfig.typographer = false;
|
|
1332
|
+
optsConfig.xhtmlOut = false;
|
|
1333
|
+
const md = new Remarkable(optsConfig);
|
|
1334
|
+
return md;
|
|
1335
|
+
}
|
|
1336
|
+
}
|
|
1337
|
+
});
|
|
1338
|
+
|
|
1339
|
+
// helpers/lib/markdown.js
|
|
1340
|
+
var require_markdown = __commonJS({
|
|
1341
|
+
"helpers/lib/markdown.js"(exports2, module2) {
|
|
1342
|
+
"use strict";
|
|
1343
|
+
var hljs = require("highlight.js");
|
|
1344
|
+
var utils = require("handlebars-utils");
|
|
1345
|
+
var { Remarkable } = require("remarkable");
|
|
1346
|
+
var helpers3 = module2.exports;
|
|
1347
|
+
var markdown;
|
|
1348
|
+
Object.defineProperty(helpers3, "markdown", {
|
|
1349
|
+
configurable: true,
|
|
1350
|
+
enumerable: true,
|
|
1351
|
+
set: function(val) {
|
|
1352
|
+
markdown = val;
|
|
1353
|
+
},
|
|
1354
|
+
get: function() {
|
|
1355
|
+
return markdown || (markdown = this.helpersForMarkdown());
|
|
1356
|
+
}
|
|
1357
|
+
});
|
|
1358
|
+
helpers3.md = require_md();
|
|
1359
|
+
helpers3.helpersForMarkdown = function(config) {
|
|
1360
|
+
const defaults = { html: true, breaks: true, highlight: helpers3.highlightFormMarkdown };
|
|
1361
|
+
if (typeof config === "string" || utils.isOptions(config)) {
|
|
1362
|
+
return markdown2.apply(defaults, arguments);
|
|
1363
|
+
}
|
|
1364
|
+
function markdown2(str, locals, options) {
|
|
1365
|
+
if (typeof str !== "string") {
|
|
1366
|
+
options = locals;
|
|
1367
|
+
locals = str;
|
|
1368
|
+
str = true;
|
|
1369
|
+
}
|
|
1370
|
+
if (utils.isOptions(locals)) {
|
|
1371
|
+
options = locals;
|
|
1372
|
+
locals = {};
|
|
1373
|
+
}
|
|
1374
|
+
const ctx = utils.context(this, locals, options);
|
|
1375
|
+
let opts = utils.options(this, locals, options);
|
|
1376
|
+
opts = Object.assign({}, defaults, config, opts);
|
|
1377
|
+
if (opts.hasOwnProperty("lang")) {
|
|
1378
|
+
opts.langPrefix = opts.lang;
|
|
1379
|
+
}
|
|
1380
|
+
const md = new Remarkable(opts);
|
|
1381
|
+
const val = utils.value(str, ctx, options);
|
|
1382
|
+
return md.render(val);
|
|
1383
|
+
}
|
|
1384
|
+
return markdown2;
|
|
1385
|
+
};
|
|
1386
|
+
helpers3.highlightFormMarkdown = function(code, lang) {
|
|
1387
|
+
if (lang) {
|
|
1388
|
+
return hljs.highlight(code, { language: lang }).value;
|
|
1389
|
+
}
|
|
1390
|
+
return hljs.highlightAuto(code).value;
|
|
1391
|
+
};
|
|
1392
|
+
}
|
|
1393
|
+
});
|
|
1394
|
+
|
|
1395
|
+
// helpers/lib/match.js
|
|
1396
|
+
var require_match = __commonJS({
|
|
1397
|
+
"helpers/lib/match.js"(exports2, module2) {
|
|
1398
|
+
"use strict";
|
|
1399
|
+
var util = require("handlebars-utils");
|
|
1400
|
+
var utils = require_utils2();
|
|
1401
|
+
var helpers3 = module2.exports;
|
|
1402
|
+
helpers3.match = function(files, patterns, locals, options) {
|
|
1403
|
+
var opts = util.options(this, locals, options);
|
|
1404
|
+
if (typeof patterns === "string") {
|
|
1405
|
+
patterns = patterns.split(/, */);
|
|
1406
|
+
}
|
|
1407
|
+
return utils.mm(files, patterns, opts);
|
|
1408
|
+
};
|
|
1409
|
+
helpers3.isMatch = function(files, patterns, locals, options) {
|
|
1410
|
+
var opts = util.options(this, locals, options);
|
|
1411
|
+
return utils.mm.isMatch(files, patterns, opts);
|
|
1412
|
+
};
|
|
1413
|
+
helpers3.mm = function() {
|
|
1414
|
+
console.log("the {{mm}} helper is depcrecated and will be removed");
|
|
1415
|
+
console.log("in handlebars-helpers v1.0.0, please use the {{match}}");
|
|
1416
|
+
console.log("helper instead.");
|
|
1417
|
+
return helpers3.match.apply(this, arguments);
|
|
1418
|
+
};
|
|
1419
|
+
}
|
|
1420
|
+
});
|
|
1421
|
+
|
|
1422
|
+
// helpers/lib/math.js
|
|
1423
|
+
var require_math = __commonJS({
|
|
1424
|
+
"helpers/lib/math.js"(exports2, module2) {
|
|
1425
|
+
"use strict";
|
|
1426
|
+
var isNumber = require("is-number");
|
|
1427
|
+
var utils = require_utils2();
|
|
1428
|
+
var helpers3 = module2.exports;
|
|
1429
|
+
helpers3.abs = function(num) {
|
|
1430
|
+
if (!isNumber(num)) {
|
|
1431
|
+
throw new TypeError("expected a number");
|
|
1432
|
+
}
|
|
1433
|
+
return Math.abs(num);
|
|
1434
|
+
};
|
|
1435
|
+
helpers3.add = function(a, b) {
|
|
1436
|
+
if (isNumber(a) && isNumber(b)) {
|
|
1437
|
+
return Number(a) + Number(b);
|
|
1438
|
+
}
|
|
1439
|
+
return "";
|
|
1440
|
+
};
|
|
1441
|
+
helpers3.avg = function() {
|
|
1442
|
+
var args = [].concat.apply([], arguments);
|
|
1443
|
+
args.pop();
|
|
1444
|
+
return helpers3.sum(args) / args.length;
|
|
1445
|
+
};
|
|
1446
|
+
helpers3.ceil = function(num) {
|
|
1447
|
+
if (!isNumber(num)) {
|
|
1448
|
+
throw new TypeError("expected a number");
|
|
1449
|
+
}
|
|
1450
|
+
return Math.ceil(num);
|
|
1451
|
+
};
|
|
1452
|
+
helpers3.divide = function(a, b) {
|
|
1453
|
+
if (!isNumber(a)) {
|
|
1454
|
+
throw new TypeError("expected the first argument to be a number");
|
|
1455
|
+
}
|
|
1456
|
+
if (!isNumber(b)) {
|
|
1457
|
+
throw new TypeError("expected the second argument to be a number");
|
|
1458
|
+
}
|
|
1459
|
+
return Number(a) / Number(b);
|
|
1460
|
+
};
|
|
1461
|
+
helpers3.floor = function(num) {
|
|
1462
|
+
if (!isNumber(num)) {
|
|
1463
|
+
throw new TypeError("expected a number");
|
|
1464
|
+
}
|
|
1465
|
+
return Math.floor(num);
|
|
1466
|
+
};
|
|
1467
|
+
helpers3.minus = function(a, b) {
|
|
1468
|
+
if (!isNumber(a)) {
|
|
1469
|
+
throw new TypeError("expected the first argument to be a number");
|
|
1470
|
+
}
|
|
1471
|
+
if (!isNumber(b)) {
|
|
1472
|
+
throw new TypeError("expected the second argument to be a number");
|
|
1473
|
+
}
|
|
1474
|
+
return Number(a) - Number(b);
|
|
1475
|
+
};
|
|
1476
|
+
helpers3.modulo = function(a, b) {
|
|
1477
|
+
if (!isNumber(a)) {
|
|
1478
|
+
throw new TypeError("expected the first argument to be a number");
|
|
1479
|
+
}
|
|
1480
|
+
if (!isNumber(b)) {
|
|
1481
|
+
throw new TypeError("expected the second argument to be a number");
|
|
1482
|
+
}
|
|
1483
|
+
return Number(a) % Number(b);
|
|
1484
|
+
};
|
|
1485
|
+
helpers3.multiply = function(a, b) {
|
|
1486
|
+
if (!isNumber(a)) {
|
|
1487
|
+
throw new TypeError("expected the first argument to be a number");
|
|
1488
|
+
}
|
|
1489
|
+
if (!isNumber(b)) {
|
|
1490
|
+
throw new TypeError("expected the second argument to be a number");
|
|
1491
|
+
}
|
|
1492
|
+
return Number(a) * Number(b);
|
|
1493
|
+
};
|
|
1494
|
+
helpers3.plus = function(a, b) {
|
|
1495
|
+
if (!isNumber(a)) {
|
|
1496
|
+
throw new TypeError("expected the first argument to be a number");
|
|
1497
|
+
}
|
|
1498
|
+
if (!isNumber(b)) {
|
|
1499
|
+
throw new TypeError("expected the second argument to be a number");
|
|
1500
|
+
}
|
|
1501
|
+
return Number(a) + Number(b);
|
|
1502
|
+
};
|
|
1503
|
+
helpers3.random = function(min, max) {
|
|
1504
|
+
if (!isNumber(min)) {
|
|
1505
|
+
throw new TypeError("expected minimum to be a number");
|
|
1506
|
+
}
|
|
1507
|
+
if (!isNumber(max)) {
|
|
1508
|
+
throw new TypeError("expected maximum to be a number");
|
|
1509
|
+
}
|
|
1510
|
+
return utils.random(min, max);
|
|
1511
|
+
};
|
|
1512
|
+
helpers3.remainder = function(a, b) {
|
|
1513
|
+
return a % b;
|
|
1514
|
+
};
|
|
1515
|
+
helpers3.round = function(num) {
|
|
1516
|
+
if (!isNumber(num)) {
|
|
1517
|
+
throw new TypeError("expected a number");
|
|
1518
|
+
}
|
|
1519
|
+
return Math.round(num);
|
|
1520
|
+
};
|
|
1521
|
+
helpers3.subtract = function(a, b) {
|
|
1522
|
+
if (!isNumber(a)) {
|
|
1523
|
+
throw new TypeError("expected the first argument to be a number");
|
|
1524
|
+
}
|
|
1525
|
+
if (!isNumber(b)) {
|
|
1526
|
+
throw new TypeError("expected the second argument to be a number");
|
|
1527
|
+
}
|
|
1528
|
+
return Number(a) - Number(b);
|
|
1529
|
+
};
|
|
1530
|
+
helpers3.sum = function() {
|
|
1531
|
+
var args = [].concat.apply([], arguments);
|
|
1532
|
+
var len = args.length;
|
|
1533
|
+
var sum = 0;
|
|
1534
|
+
while (len--) {
|
|
1535
|
+
if (utils.isNumber(args[len])) {
|
|
1536
|
+
sum += Number(args[len]);
|
|
1537
|
+
}
|
|
1538
|
+
}
|
|
1539
|
+
return sum;
|
|
1540
|
+
};
|
|
1541
|
+
helpers3.times = function() {
|
|
1542
|
+
return helpers3.multiply.apply(this, arguments);
|
|
1543
|
+
};
|
|
1544
|
+
}
|
|
1545
|
+
});
|
|
1546
|
+
|
|
1547
|
+
// helpers/lib/misc.js
|
|
1548
|
+
var require_misc = __commonJS({
|
|
1549
|
+
"helpers/lib/misc.js"(exports2, module2) {
|
|
1550
|
+
"use strict";
|
|
1551
|
+
var util = require("handlebars-utils");
|
|
1552
|
+
var utils = require_utils2();
|
|
1553
|
+
var helpers3 = module2.exports;
|
|
1554
|
+
helpers3.frame = require("handlebars-helper-create-frame");
|
|
1555
|
+
helpers3.option = function(prop, locals, options) {
|
|
1556
|
+
return utils.get(util.options(this, locals, options), prop);
|
|
1557
|
+
};
|
|
1558
|
+
helpers3.noop = function(options) {
|
|
1559
|
+
return options.fn(this);
|
|
1560
|
+
};
|
|
1561
|
+
helpers3.typeOf = require("kind-of");
|
|
1562
|
+
helpers3.withHash = function(options) {
|
|
1563
|
+
if (options.hash && Object.keys(options.hash).length) {
|
|
1564
|
+
return options.fn(options.hash);
|
|
1565
|
+
} else {
|
|
1566
|
+
return options.inverse(this);
|
|
1567
|
+
}
|
|
1568
|
+
};
|
|
1569
|
+
}
|
|
1570
|
+
});
|
|
1571
|
+
|
|
1572
|
+
// helpers/lib/path.js
|
|
1573
|
+
var require_path = __commonJS({
|
|
1574
|
+
"helpers/lib/path.js"(exports2, module2) {
|
|
1575
|
+
"use strict";
|
|
1576
|
+
var util = require("handlebars-utils");
|
|
1577
|
+
var path = require("path");
|
|
1578
|
+
var utils = require_utils2();
|
|
1579
|
+
var helpers3 = module2.exports;
|
|
1580
|
+
utils.expectedType = (variableName, expectedType, variableValue) => {
|
|
1581
|
+
const actualType = Object.prototype.toString.call(variableValue).slice(8, -1).toLowerCase();
|
|
1582
|
+
if (actualType !== expectedType) {
|
|
1583
|
+
throw new TypeError(`Expected ${variableName} to be of type ${expectedType}, but got ${actualType}`);
|
|
1584
|
+
}
|
|
1585
|
+
};
|
|
1586
|
+
helpers3.absolute = function(filepath, options) {
|
|
1587
|
+
options = options || { data: {} };
|
|
1588
|
+
var context = util.options(this, options);
|
|
1589
|
+
var ctx = Object.assign({}, options.data.root, context);
|
|
1590
|
+
var cwd = ctx.cwd || process.cwd();
|
|
1591
|
+
return path.resolve(cwd, filepath);
|
|
1592
|
+
};
|
|
1593
|
+
helpers3.dirname = function(filepath, options) {
|
|
1594
|
+
if (typeof filepath !== "string") {
|
|
1595
|
+
throw new TypeError(utils.expectedType("filepath", "string", filepath));
|
|
1596
|
+
}
|
|
1597
|
+
return path.dirname(filepath);
|
|
1598
|
+
};
|
|
1599
|
+
helpers3.relative = function(a, b) {
|
|
1600
|
+
if (typeof a !== "string") {
|
|
1601
|
+
throw new TypeError(utils.expectedType("first path", "string", a));
|
|
1602
|
+
}
|
|
1603
|
+
if (typeof b !== "string") {
|
|
1604
|
+
throw new TypeError(utils.expectedType("second path", "string", b));
|
|
1605
|
+
}
|
|
1606
|
+
return utils.relative(a, b);
|
|
1607
|
+
};
|
|
1608
|
+
helpers3.basename = function(filepath) {
|
|
1609
|
+
if (typeof filepath !== "string") {
|
|
1610
|
+
throw new TypeError(utils.expectedType("filepath", "string", filepath));
|
|
1611
|
+
}
|
|
1612
|
+
return path.basename(filepath);
|
|
1613
|
+
};
|
|
1614
|
+
helpers3.stem = function(filepath) {
|
|
1615
|
+
if (typeof filepath !== "string") {
|
|
1616
|
+
throw new TypeError(utils.expectedType("filepath", "string", filepath));
|
|
1617
|
+
}
|
|
1618
|
+
return path.basename(filepath, path.extname(filepath));
|
|
1619
|
+
};
|
|
1620
|
+
helpers3.extname = function(filepath) {
|
|
1621
|
+
if (typeof filepath !== "string") {
|
|
1622
|
+
throw new TypeError(utils.expectedType("filepath", "string", filepath));
|
|
1623
|
+
}
|
|
1624
|
+
return path.extname(filepath);
|
|
1625
|
+
};
|
|
1626
|
+
helpers3.resolve = function(filepath) {
|
|
1627
|
+
var args = [].slice.call(arguments);
|
|
1628
|
+
var opts = util.options(this, args.pop());
|
|
1629
|
+
var cwd = path.resolve(opts.cwd || process.cwd());
|
|
1630
|
+
args.unshift(cwd);
|
|
1631
|
+
return path.resolve.apply(path, args);
|
|
1632
|
+
};
|
|
1633
|
+
helpers3.segments = function(filepath, a, b) {
|
|
1634
|
+
if (typeof filepath !== "string") {
|
|
1635
|
+
throw new TypeError(utils.expectedType("filepath", "string", filepath));
|
|
1636
|
+
}
|
|
1637
|
+
var segments = filepath.split(/[\\\/]+/);
|
|
1638
|
+
return segments.slice(a, b).join("/");
|
|
1639
|
+
};
|
|
1640
|
+
}
|
|
1641
|
+
});
|
|
1642
|
+
|
|
1643
|
+
// helpers/lib/regex.js
|
|
1644
|
+
var require_regex = __commonJS({
|
|
1645
|
+
"helpers/lib/regex.js"(exports2, module2) {
|
|
1646
|
+
"use strict";
|
|
1647
|
+
var util = require("handlebars-utils");
|
|
1648
|
+
var utils = require_utils2();
|
|
1649
|
+
var helpers3 = module2.exports;
|
|
1650
|
+
helpers3.toRegex = function(str, locals, options) {
|
|
1651
|
+
var opts = util.options({}, locals, options);
|
|
1652
|
+
return new RegExp(str, opts.flags);
|
|
1653
|
+
};
|
|
1654
|
+
helpers3.test = function(str, regex) {
|
|
1655
|
+
if (!util.isString(str)) {
|
|
1656
|
+
return false;
|
|
1657
|
+
}
|
|
1658
|
+
if (utils.typeOf(regex) !== "regexp") {
|
|
1659
|
+
throw new TypeError("expected a regular expression");
|
|
1660
|
+
}
|
|
1661
|
+
return regex.test(str);
|
|
1662
|
+
};
|
|
1663
|
+
}
|
|
1664
|
+
});
|
|
1665
|
+
|
|
1666
|
+
// helpers/lib/string.js
|
|
1667
|
+
var require_string = __commonJS({
|
|
1668
|
+
"helpers/lib/string.js"(exports2, module2) {
|
|
1669
|
+
"use strict";
|
|
1670
|
+
var isNumber = require("is-number");
|
|
1671
|
+
var util = require("handlebars-utils");
|
|
1672
|
+
var utils = require_utils2();
|
|
1673
|
+
var helpers3 = module2.exports;
|
|
1674
|
+
helpers3.append = function(str, suffix) {
|
|
1675
|
+
if (typeof str === "string" && typeof suffix === "string") {
|
|
1676
|
+
return str + suffix;
|
|
1677
|
+
}
|
|
1678
|
+
return str;
|
|
1679
|
+
};
|
|
1680
|
+
helpers3.camelcase = function(str) {
|
|
1681
|
+
if (!util.isString(str)) return "";
|
|
1682
|
+
return utils.changecase(str, function(ch) {
|
|
1683
|
+
return ch.toUpperCase();
|
|
1684
|
+
});
|
|
1685
|
+
};
|
|
1686
|
+
helpers3.capitalize = function(str) {
|
|
1687
|
+
if (!util.isString(str)) return "";
|
|
1688
|
+
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
1689
|
+
};
|
|
1690
|
+
helpers3.capitalizeAll = function(str) {
|
|
1691
|
+
if (!util.isString(str)) return "";
|
|
1692
|
+
if (util.isString(str)) {
|
|
1693
|
+
return str.replace(/\w\S*/g, function(word) {
|
|
1694
|
+
return helpers3.capitalize(word);
|
|
1695
|
+
});
|
|
1696
|
+
}
|
|
1697
|
+
};
|
|
1698
|
+
helpers3.center = function(str, spaces) {
|
|
1699
|
+
if (!util.isString(str)) return "";
|
|
1700
|
+
var space = "";
|
|
1701
|
+
var i = 0;
|
|
1702
|
+
while (i < spaces) {
|
|
1703
|
+
space += " ";
|
|
1704
|
+
i++;
|
|
1705
|
+
}
|
|
1706
|
+
return space + str + space;
|
|
1707
|
+
};
|
|
1708
|
+
helpers3.chop = function(str) {
|
|
1709
|
+
if (!util.isString(str)) return "";
|
|
1710
|
+
return utils.chop(str);
|
|
1711
|
+
};
|
|
1712
|
+
helpers3.dashcase = function(str) {
|
|
1713
|
+
if (!util.isString(str)) return "";
|
|
1714
|
+
return utils.changecase(str, function(ch) {
|
|
1715
|
+
return "-" + ch;
|
|
1716
|
+
});
|
|
1717
|
+
};
|
|
1718
|
+
helpers3.dotcase = function(str) {
|
|
1719
|
+
if (!util.isString(str)) return "";
|
|
1720
|
+
return utils.changecase(str, function(ch) {
|
|
1721
|
+
return "." + ch;
|
|
1722
|
+
});
|
|
1723
|
+
};
|
|
1724
|
+
helpers3.downcase = function() {
|
|
1725
|
+
return helpers3.lowercase.apply(this, arguments);
|
|
1726
|
+
};
|
|
1727
|
+
helpers3.ellipsis = function(str, limit) {
|
|
1728
|
+
if (util.isString(str)) {
|
|
1729
|
+
if (str.length <= limit) {
|
|
1730
|
+
return str;
|
|
1731
|
+
}
|
|
1732
|
+
return helpers3.truncate(str, limit) + "\u2026";
|
|
1733
|
+
}
|
|
1734
|
+
};
|
|
1735
|
+
helpers3.hyphenate = function(str) {
|
|
1736
|
+
if (!util.isString(str)) return "";
|
|
1737
|
+
return str.split(" ").join("-");
|
|
1738
|
+
};
|
|
1739
|
+
helpers3.isString = function(value) {
|
|
1740
|
+
return typeof value === "string";
|
|
1741
|
+
};
|
|
1742
|
+
helpers3.lowercase = function(str) {
|
|
1743
|
+
if (util.isObject(str) && str.fn) {
|
|
1744
|
+
return str.fn(this).toLowerCase();
|
|
1745
|
+
}
|
|
1746
|
+
if (!util.isString(str)) return "";
|
|
1747
|
+
return str.toLowerCase();
|
|
1748
|
+
};
|
|
1749
|
+
helpers3.occurrences = function(str, substring) {
|
|
1750
|
+
if (!util.isString(str)) return "";
|
|
1751
|
+
var len = substring.length;
|
|
1752
|
+
var pos = 0;
|
|
1753
|
+
var n = 0;
|
|
1754
|
+
while ((pos = str.indexOf(substring, pos)) > -1) {
|
|
1755
|
+
n++;
|
|
1756
|
+
pos += len;
|
|
1757
|
+
}
|
|
1758
|
+
return n;
|
|
1759
|
+
};
|
|
1760
|
+
helpers3.pascalcase = function(str) {
|
|
1761
|
+
if (!util.isString(str)) return "";
|
|
1762
|
+
str = utils.changecase(str, function(ch) {
|
|
1763
|
+
return ch.toUpperCase();
|
|
1764
|
+
});
|
|
1765
|
+
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
1766
|
+
};
|
|
1767
|
+
helpers3.pathcase = function(str) {
|
|
1768
|
+
if (!util.isString(str)) return "";
|
|
1769
|
+
return utils.changecase(str, function(ch) {
|
|
1770
|
+
return "/" + ch;
|
|
1771
|
+
});
|
|
1772
|
+
};
|
|
1773
|
+
helpers3.plusify = function(str, ch) {
|
|
1774
|
+
if (!util.isString(str)) return "";
|
|
1775
|
+
if (!util.isString(ch)) ch = " ";
|
|
1776
|
+
return str.split(ch).join("+");
|
|
1777
|
+
};
|
|
1778
|
+
helpers3.prepend = function(str, prefix) {
|
|
1779
|
+
return typeof str === "string" && typeof prefix === "string" ? prefix + str : str;
|
|
1780
|
+
};
|
|
1781
|
+
helpers3.raw = function(options) {
|
|
1782
|
+
var str = options.fn();
|
|
1783
|
+
var opts = util.options(this, options);
|
|
1784
|
+
if (opts.escape !== false) {
|
|
1785
|
+
var idx = 0;
|
|
1786
|
+
while ((idx = str.indexOf("{{", idx)) !== -1) {
|
|
1787
|
+
if (str[idx - 1] !== "\\") {
|
|
1788
|
+
str = str.slice(0, idx) + "\\" + str.slice(idx);
|
|
1789
|
+
}
|
|
1790
|
+
idx += 3;
|
|
1791
|
+
}
|
|
1792
|
+
}
|
|
1793
|
+
return str;
|
|
1794
|
+
};
|
|
1795
|
+
helpers3.remove = function(str, ch) {
|
|
1796
|
+
if (!util.isString(str)) return "";
|
|
1797
|
+
if (!util.isString(ch)) return str;
|
|
1798
|
+
return str.split(ch).join("");
|
|
1799
|
+
};
|
|
1800
|
+
helpers3.removeFirst = function(str, ch) {
|
|
1801
|
+
if (!util.isString(str)) return "";
|
|
1802
|
+
if (!util.isString(ch)) return str;
|
|
1803
|
+
return str.replace(ch, "");
|
|
1804
|
+
};
|
|
1805
|
+
helpers3.replace = function(str, a, b) {
|
|
1806
|
+
if (!util.isString(str)) return "";
|
|
1807
|
+
if (!util.isString(a)) return str;
|
|
1808
|
+
if (!util.isString(b)) b = "";
|
|
1809
|
+
return str.split(a).join(b);
|
|
1810
|
+
};
|
|
1811
|
+
helpers3.replaceFirst = function(str, a, b) {
|
|
1812
|
+
if (!util.isString(str)) return "";
|
|
1813
|
+
if (!util.isString(a)) return str;
|
|
1814
|
+
if (!util.isString(b)) b = "";
|
|
1815
|
+
return str.replace(a, b);
|
|
1816
|
+
};
|
|
1817
|
+
helpers3.reverse = function(str) {
|
|
1818
|
+
if (!util.isString(str)) return "";
|
|
1819
|
+
return str.split("").reverse().join("");
|
|
1820
|
+
};
|
|
1821
|
+
helpers3.sentence = function(str) {
|
|
1822
|
+
if (!util.isString(str)) return "";
|
|
1823
|
+
return str.replace(/((?:\S[^\.\?\!]*)[\.\?\!]*)/g, function(txt) {
|
|
1824
|
+
return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
|
|
1825
|
+
});
|
|
1826
|
+
};
|
|
1827
|
+
helpers3.snakecase = function(str) {
|
|
1828
|
+
if (!util.isString(str)) return "";
|
|
1829
|
+
return utils.changecase(str, function(ch) {
|
|
1830
|
+
return "_" + ch;
|
|
1831
|
+
});
|
|
1832
|
+
};
|
|
1833
|
+
helpers3.split = function(str, ch) {
|
|
1834
|
+
if (!util.isString(str)) return "";
|
|
1835
|
+
if (!util.isString(ch)) ch = ",";
|
|
1836
|
+
return str.split(ch);
|
|
1837
|
+
};
|
|
1838
|
+
helpers3.startsWith = function(prefix, str, options) {
|
|
1839
|
+
var args = [].slice.call(arguments);
|
|
1840
|
+
options = args.pop();
|
|
1841
|
+
if (util.isString(str) && str.indexOf(prefix) === 0) {
|
|
1842
|
+
return options.fn(this);
|
|
1843
|
+
}
|
|
1844
|
+
if (typeof options.inverse === "function") {
|
|
1845
|
+
return options.inverse(this);
|
|
1846
|
+
}
|
|
1847
|
+
return "";
|
|
1848
|
+
};
|
|
1849
|
+
helpers3.titleize = function(str) {
|
|
1850
|
+
if (!util.isString(str)) return "";
|
|
1851
|
+
var title = str.replace(/[- _]+/g, " ");
|
|
1852
|
+
var words = title.split(" ");
|
|
1853
|
+
var len = words.length;
|
|
1854
|
+
var res = [];
|
|
1855
|
+
var i = 0;
|
|
1856
|
+
while (len--) {
|
|
1857
|
+
var word = words[i++];
|
|
1858
|
+
res.push(exports2.capitalize(word));
|
|
1859
|
+
}
|
|
1860
|
+
return res.join(" ");
|
|
1861
|
+
};
|
|
1862
|
+
helpers3.trim = function(str) {
|
|
1863
|
+
return typeof str === "string" ? str.trim() : "";
|
|
1864
|
+
};
|
|
1865
|
+
helpers3.trimLeft = function(str) {
|
|
1866
|
+
if (util.isString(str)) {
|
|
1867
|
+
return str.replace(/^\s+/, "");
|
|
1868
|
+
}
|
|
1869
|
+
};
|
|
1870
|
+
helpers3.trimRight = function(str) {
|
|
1871
|
+
if (util.isString(str)) {
|
|
1872
|
+
return str.replace(/\s+$/, "");
|
|
1873
|
+
}
|
|
1874
|
+
};
|
|
1875
|
+
helpers3.truncate = function(str, limit, suffix) {
|
|
1876
|
+
if (util.isString(str)) {
|
|
1877
|
+
if (typeof suffix !== "string") {
|
|
1878
|
+
suffix = "";
|
|
1879
|
+
}
|
|
1880
|
+
if (str.length > limit) {
|
|
1881
|
+
return str.slice(0, limit - suffix.length) + suffix;
|
|
1882
|
+
}
|
|
1883
|
+
return str;
|
|
1884
|
+
}
|
|
1885
|
+
};
|
|
1886
|
+
helpers3.truncateWords = function(str, count, suffix) {
|
|
1887
|
+
if (util.isString(str) && isNumber(count)) {
|
|
1888
|
+
if (typeof suffix !== "string") {
|
|
1889
|
+
suffix = "...";
|
|
1890
|
+
}
|
|
1891
|
+
var num = Number(count);
|
|
1892
|
+
var arr = str.split(" ");
|
|
1893
|
+
if (num < arr.length) {
|
|
1894
|
+
arr = arr.slice(0, num);
|
|
1895
|
+
}
|
|
1896
|
+
var val = arr.join(" ").trim();
|
|
1897
|
+
return val + suffix;
|
|
1898
|
+
}
|
|
1899
|
+
};
|
|
1900
|
+
helpers3.upcase = function() {
|
|
1901
|
+
return helpers3.uppercase.apply(this, arguments);
|
|
1902
|
+
};
|
|
1903
|
+
helpers3.uppercase = function(str) {
|
|
1904
|
+
if (util.isObject(str) && str.fn) {
|
|
1905
|
+
return str.fn(this).toUpperCase();
|
|
1906
|
+
}
|
|
1907
|
+
if (!util.isString(str)) return "";
|
|
1908
|
+
return str.toUpperCase();
|
|
1909
|
+
};
|
|
1910
|
+
}
|
|
1911
|
+
});
|
|
1912
|
+
|
|
1913
|
+
// helpers/lib/url.js
|
|
1914
|
+
var require_url = __commonJS({
|
|
1915
|
+
"helpers/lib/url.js"(exports2, module2) {
|
|
1916
|
+
"use strict";
|
|
1917
|
+
var url = require("url");
|
|
1918
|
+
var util = require("handlebars-utils");
|
|
1919
|
+
var querystring = require("querystring");
|
|
1920
|
+
var helpers3 = module2.exports;
|
|
1921
|
+
helpers3.encodeURI = function(str) {
|
|
1922
|
+
if (util.isString(str)) {
|
|
1923
|
+
return encodeURIComponent(str);
|
|
1924
|
+
}
|
|
1925
|
+
};
|
|
1926
|
+
helpers3.escape = function(str) {
|
|
1927
|
+
if (util.isString(str)) {
|
|
1928
|
+
return querystring.escape(str);
|
|
1929
|
+
}
|
|
1930
|
+
};
|
|
1931
|
+
helpers3.decodeURI = function(str) {
|
|
1932
|
+
if (util.isString(str)) {
|
|
1933
|
+
return decodeURIComponent(str);
|
|
1934
|
+
}
|
|
1935
|
+
};
|
|
1936
|
+
helpers3.url_encode = function() {
|
|
1937
|
+
return helpers3.encodeURI.apply(this, arguments);
|
|
1938
|
+
};
|
|
1939
|
+
helpers3.url_decode = function(val) {
|
|
1940
|
+
return helpers3.decodeURI.apply(this, arguments);
|
|
1941
|
+
};
|
|
1942
|
+
helpers3.urlResolve = function(base, href) {
|
|
1943
|
+
return url.resolve(base, href);
|
|
1944
|
+
};
|
|
1945
|
+
helpers3.urlParse = function(str) {
|
|
1946
|
+
return url.parse(str);
|
|
1947
|
+
};
|
|
1948
|
+
helpers3.stripQuerystring = function(str) {
|
|
1949
|
+
if (util.isString(str)) {
|
|
1950
|
+
return str.split("?")[0];
|
|
1951
|
+
}
|
|
1952
|
+
};
|
|
1953
|
+
helpers3.stripProtocol = function(str) {
|
|
1954
|
+
if (util.isString(str)) {
|
|
1955
|
+
var parsed = url.parse(str);
|
|
1956
|
+
parsed.protocol = "";
|
|
1957
|
+
return parsed.format();
|
|
1958
|
+
}
|
|
1959
|
+
};
|
|
1960
|
+
}
|
|
1961
|
+
});
|
|
1962
|
+
|
|
1963
|
+
// helpers/lib/index.js
|
|
1964
|
+
var require_lib = __commonJS({
|
|
1965
|
+
"helpers/lib/index.js"(exports2, module2) {
|
|
1966
|
+
"use strict";
|
|
1967
|
+
module2.exports = {
|
|
1968
|
+
array: require_array(),
|
|
1969
|
+
code: require_code(),
|
|
1970
|
+
collection: require_collection(),
|
|
1971
|
+
comparison: require_comparison(),
|
|
1972
|
+
date: require_date(),
|
|
1973
|
+
fs: require_fs(),
|
|
1974
|
+
html: require_html2(),
|
|
1975
|
+
i18n: require_i18n(),
|
|
1976
|
+
inflection: require_inflection(),
|
|
1977
|
+
logging: require_logging(),
|
|
1978
|
+
markdown: require_markdown(),
|
|
1979
|
+
match: require_match(),
|
|
1980
|
+
math: require_math(),
|
|
1981
|
+
misc: require_misc(),
|
|
1982
|
+
number: require_number(),
|
|
1983
|
+
object: require_object(),
|
|
1984
|
+
path: require_path(),
|
|
1985
|
+
regex: require_regex(),
|
|
1986
|
+
string: require_string(),
|
|
1987
|
+
url: require_url()
|
|
1988
|
+
};
|
|
1989
|
+
}
|
|
1990
|
+
});
|
|
1991
|
+
|
|
1992
|
+
// helpers/helpers.js
|
|
1993
|
+
var require_helpers = __commonJS({
|
|
1994
|
+
"helpers/helpers.js"(exports2, module2) {
|
|
1995
|
+
"use strict";
|
|
1996
|
+
var forIn = require("for-in");
|
|
1997
|
+
var define = require("define-property");
|
|
1998
|
+
var lib = require_lib();
|
|
1999
|
+
module2.exports = function helpers3(groups, options) {
|
|
2000
|
+
if (typeof groups === "string") {
|
|
2001
|
+
groups = [groups];
|
|
2002
|
+
} else if (!Array.isArray(groups)) {
|
|
2003
|
+
options = groups;
|
|
2004
|
+
groups = null;
|
|
2005
|
+
}
|
|
2006
|
+
options = options || {};
|
|
2007
|
+
var hbs = options.handlebars || options.hbs || require("handlebars");
|
|
2008
|
+
define(module2.exports, "handlebars", hbs);
|
|
2009
|
+
if (groups) {
|
|
2010
|
+
groups.forEach(function(key) {
|
|
2011
|
+
hbs.registerHelper(lib[key]);
|
|
2012
|
+
});
|
|
2013
|
+
} else {
|
|
2014
|
+
forIn(lib, function(group, key) {
|
|
2015
|
+
hbs.registerHelper(group);
|
|
2016
|
+
});
|
|
2017
|
+
}
|
|
2018
|
+
return hbs.helpers;
|
|
2019
|
+
};
|
|
2020
|
+
forIn(lib, function(group, key) {
|
|
2021
|
+
define(module2.exports, key, function(options) {
|
|
2022
|
+
options = options || {};
|
|
2023
|
+
var hbs = options.handlebars || options.hbs || require("handlebars");
|
|
2024
|
+
define(module2.exports, "handlebars", hbs);
|
|
2025
|
+
hbs.registerHelper(group);
|
|
2026
|
+
return hbs.helpers;
|
|
2027
|
+
});
|
|
2028
|
+
});
|
|
2029
|
+
module2.exports.utils = require_utils2();
|
|
2030
|
+
}
|
|
2031
|
+
});
|
|
2032
|
+
|
|
2033
|
+
// src/index.ts
|
|
2034
|
+
var src_exports = {};
|
|
2035
|
+
__export(src_exports, {
|
|
2036
|
+
Handlebars: () => Handlebars,
|
|
2037
|
+
createHandlebars: () => createHandlebars,
|
|
2038
|
+
fumanchu: () => fumanchu,
|
|
2039
|
+
handlebars: () => handlebars,
|
|
2040
|
+
helpers: () => helpers2
|
|
2041
|
+
});
|
|
2042
|
+
module.exports = __toCommonJS(src_exports);
|
|
2043
|
+
var HandlebarsLib = __toESM(require("handlebars"));
|
|
2044
|
+
|
|
2045
|
+
// src/helpers/date.ts
|
|
2046
|
+
var year = () => (/* @__PURE__ */ new Date()).getFullYear().toString();
|
|
2047
|
+
var helpers = [
|
|
2048
|
+
{
|
|
2049
|
+
name: "year",
|
|
2050
|
+
category: "date",
|
|
2051
|
+
fn: year
|
|
2052
|
+
}
|
|
2053
|
+
];
|
|
2054
|
+
|
|
2055
|
+
// src/helper-registry.ts
|
|
2056
|
+
var HelperRegistry = class {
|
|
2057
|
+
constructor() {
|
|
2058
|
+
this._helpers = [];
|
|
2059
|
+
this.init();
|
|
2060
|
+
}
|
|
2061
|
+
init() {
|
|
2062
|
+
this.registerHelpers(helpers);
|
|
2063
|
+
}
|
|
2064
|
+
register(helper) {
|
|
2065
|
+
const result = false;
|
|
2066
|
+
if (!this.has(helper.name)) {
|
|
2067
|
+
this._helpers.push(helper);
|
|
2068
|
+
}
|
|
2069
|
+
return result;
|
|
2070
|
+
}
|
|
2071
|
+
registerHelpers(helpers3) {
|
|
2072
|
+
for (const helper of helpers3) {
|
|
2073
|
+
this.register(helper);
|
|
2074
|
+
}
|
|
2075
|
+
}
|
|
2076
|
+
has(name) {
|
|
2077
|
+
return this._helpers.some((helper) => helper.name === name);
|
|
2078
|
+
}
|
|
2079
|
+
filter(filter) {
|
|
2080
|
+
return this._helpers.filter((helper) => (!filter.name || helper.name === filter.name) && (!filter.category || helper.category === filter.category) && (!filter.compatibility || helper.compatibility === filter.compatibility));
|
|
2081
|
+
}
|
|
2082
|
+
loadHandlebars(handlebars2) {
|
|
2083
|
+
for (const helper of this._helpers) {
|
|
2084
|
+
handlebars2.registerHelper(helper.name, helper.fn);
|
|
2085
|
+
}
|
|
2086
|
+
}
|
|
2087
|
+
swapHelpers(handlebars2) {
|
|
2088
|
+
for (const helper of this._helpers) {
|
|
2089
|
+
handlebars2.unregisterHelper(helper.name);
|
|
2090
|
+
handlebars2.registerHelper(helper.name, helper.fn);
|
|
2091
|
+
}
|
|
2092
|
+
}
|
|
2093
|
+
};
|
|
2094
|
+
|
|
2095
|
+
// src/index.ts
|
|
2096
|
+
var import_helpers = __toESM(require_helpers());
|
|
2097
|
+
var Handlebars = HandlebarsLib;
|
|
2098
|
+
var handlebars = HandlebarsLib.create();
|
|
2099
|
+
var helpers2 = import_helpers.default;
|
|
2100
|
+
function createHandlebars() {
|
|
2101
|
+
return __async(this, null, function* () {
|
|
2102
|
+
const registry = new HelperRegistry();
|
|
2103
|
+
const handlebars2 = HandlebarsLib.create();
|
|
2104
|
+
const helpersFunction = yield Promise.resolve().then(() => __toESM(require_helpers()));
|
|
2105
|
+
helpersFunction.default({ handlebars: handlebars2 });
|
|
2106
|
+
registry.swapHelpers(handlebars2);
|
|
2107
|
+
return handlebars2;
|
|
2108
|
+
});
|
|
2109
|
+
}
|
|
2110
|
+
function fumanchu(options) {
|
|
2111
|
+
const registry = new HelperRegistry();
|
|
2112
|
+
const handlebars2 = HandlebarsLib.create();
|
|
2113
|
+
registry.loadHandlebars(handlebars2);
|
|
2114
|
+
return handlebars2;
|
|
2115
|
+
}
|
|
2116
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
2117
|
+
0 && (module.exports = {
|
|
2118
|
+
Handlebars,
|
|
2119
|
+
createHandlebars,
|
|
2120
|
+
fumanchu,
|
|
2121
|
+
handlebars,
|
|
2122
|
+
helpers
|
|
2123
|
+
});
|
|
2124
|
+
/*!
|
|
2125
|
+
* helper-markdown <https://github.com/jonschlinkert/helper-markdown>
|
|
2126
|
+
*
|
|
2127
|
+
* Copyright (c) 2014 Jon Schlinkert, contributors.
|
|
2128
|
+
* Licensed under the MIT license.
|
|
2129
|
+
*/
|
|
2130
|
+
/*!
|
|
2131
|
+
* handlebars-helpers <https://github.com/helpers/handlebars-helpers>
|
|
2132
|
+
*
|
|
2133
|
+
* Copyright (c) 2013-2017, Jon Schlinkert, Brian Woodward.
|
|
2134
|
+
* Released under the MIT License.
|
|
2135
|
+
*/
|