UNPKG

pixiv-illust

Version:

A third-party Node.js library for Pixiv.

96 lines (82 loc) 3.33 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.isthenable = isthenable; exports.cachedProperty = cachedProperty; exports.replacePlaceholder = replacePlaceholder; exports.getDate = getDate; var _Bluebird = require('Bluebird'); var _Bluebird2 = _interopRequireDefault(_Bluebird); var _lodash = require('lodash'); var _lodash2 = _interopRequireDefault(_lodash); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function isthenable(o) { return typeof (o && o.then) === 'function'; } function cachedProperty(target, prop, descriptor) { var method = descriptor.value; descriptor.value = function () { for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } var cache = this._cache = this._cache || {}; if (cache.hasOwnProperty(prop)) { var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { for (var _iterator = cache[prop][Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var result = _step.value; if (_lodash2.default.isEqual(args, result.args)) { var value = result.value; return isthenable(value) ? value : _Bluebird2.default.resolve(value); } } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } } cache[prop] = cache[prop] || []; var ret = method.apply(this, args); ret = isthenable(ret) ? ret : _Bluebird2.default.resolve(ret); cache[prop].push({ args: args, value: ret }); return ret; }; return descriptor; } function replacePlaceholder(str, dataSource) { var startDelimiter = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '{{'; var endDelimiter = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '}}'; var regex = new RegExp(startDelimiter + '(.*?)' + endDelimiter, 'g'); str = str.toString(); return str.replace(regex, function ($, $1) { return new Function('dataSource', 'try {\n with(dataSource){\n return ' + $1 + ';\n }\n } catch(e) {\n return "";\n }')(dataSource); }); } function getDate(d) { if (typeof d === 'string') { return d; } if (!(d instanceof Date)) { d = new Date(d); } var year = d.getFullYear(); var month = d.getMonth() + 1; var date = d.getDate(); return '' + year + _lodash2.default.padStart(month, 2, '0') + _lodash2.default.padStart(date, 2, '0'); }