pixiv-illust
Version:
A third-party Node.js library for Pixiv.
96 lines (82 loc) • 3.33 kB
JavaScript
;
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');
}