30 lines
828 B
JavaScript
30 lines
828 B
JavaScript
/* global hexo */
|
|
|
|
'use strict';
|
|
|
|
const crypto = require('crypto');
|
|
const { decodeURL } = require('hexo-util');
|
|
const compareVersions = require('../../scripts/utils/compare-versions');
|
|
|
|
hexo.extend.helper.register('md5', function(string) {
|
|
return crypto.createHash('md5').update(string).digest('hex');
|
|
});
|
|
|
|
hexo.extend.helper.register('require_version', function(current, require) {
|
|
const verRe = current.match(/[@/](\d{1,2})\.?(\d{0,2})\.?(\d{0,2})/);
|
|
if (verRe && verRe.length >= 4) {
|
|
const ver = `${verRe[1]}.${verRe[2] || 'x'}.${verRe[3] || 'x'}`;
|
|
return compareVersions(ver, require) >= 0;
|
|
}
|
|
return false;
|
|
});
|
|
|
|
hexo.extend.helper.register('deduplicate', function(arr) {
|
|
if (!Array.isArray(arr)) {
|
|
return [];
|
|
}
|
|
return [...new Set(arr)];
|
|
});
|
|
|
|
hexo.extend.helper.register('decode_url', decodeURL);
|