问题修复

This commit is contained in:
masnn committed 2020-04-10 23:17:33 +08:00
1 parent 4c2edc3948
commit 26c467f60f
10 files changed
+106 -106

No files matched your search

+5 -43
View File
@@ -8,7 +8,7 @@ const
options = require('../options'),
perm = require('../permission'),
builtin = require('../model/builtin'),
md5 = require('../lib/md5'),
misc=require('../lib/misc'),
{ MIDDLEWARE } = require('../service/server'),
{ NotFoundError } = require('../error');
@@ -29,33 +29,6 @@ class Markdown extends MarkdownIt {
}
}
const md = new Markdown();
function datetime_span(dt, { relative = true } = {}) {
if (dt.generationTime) dt = new Date(dt.generationTime * 1000);
else if (typeof dt == 'number' || typeof dt == 'string') dt = new Date(dt);
return '<span class="time{0}" data-timestamp="{1}">{2}</span>'.format(
relative ? ' relative' : '',
dt.getTime() / 1000,
dt.toLocaleString()
);
}
function* paginate(page, num_pages) {
let radius = 2, first, last;
if (page > 1) {
yield ['first', 1];
yield ['previous', page - 1];
}
if (page <= radius) [first, last] = [1, Math.min(1 + radius * 2, num_pages)];
else if (page >= num_pages - radius) [first, last] = [Math.max(1, num_pages - radius * 2), num_pages];
else[first, last] = [page - radius, page + radius];
if (first > 1) yield ['ellipsis', 0];
for (let page0 = first; page0 < last + 1; page0++) {
if (page0 != page) yield ['page', page0];
else yield ['current', page];
}
if (last < num_pages) yield ['ellipsis', 0];
if (page < num_pages) yield ['next', page + 1];
yield ['last', num_pages];
}
class Nunjucks extends nunjucks.Environment {
constructor() {
super(
@@ -71,25 +44,14 @@ class Nunjucks extends nunjucks.Environment {
this.addFilter('markdown', function (self) {
return md.render(self);
});
this.addFilter('gravatar_url', function (email, size) {
return `//gravatar.loli.net/avatar/${md5(email.toString().trim().toLowerCase())}?d=mm&s=${size}`;
});
this.addFilter('format_size', function (size, base = 1) {
size *= base;
let unit = 1024;
let unit_names = ['Bytes', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB'];
for (let unit_name of unit_names) {
if (size < unit) return '{0} {1}'.format(Math.round(size), unit_name);
size /= unit;
}
return '{0} {1}'.format(Math.round(size * unit), unit_names[unit_names.length - 1]);
});
this.addFilter('gravatar_url', misc.gravatar_url);
this.addFilter('format_size', misc.format_size);
this.addGlobal('typeof', o => typeof o);
this.addGlobal('console', console);
this.addGlobal('static_url', str => `/${str}`);
this.addGlobal('reverse_url', str => str);
this.addGlobal('datetime_span', datetime_span);
this.addGlobal('paginate', paginate);
this.addGlobal('datetime_span', misc.datetime_span);
this.addGlobal('paginate', misc.paginate);
this.addGlobal('perm', perm);
this.addGlobal('builtin', builtin);
this.addGlobal('status', builtin.STATUS);