blog/themes/fluid/scripts/helpers/scope.js

51 lines
1.1 KiB
JavaScript
Raw Normal View History

2024-11-16 11:34:10 +08:00
/* global hexo */
'use strict';
const pageInScope = (page, scope) => {
switch (scope) {
case 'home':
return Boolean(page.__index);
case 'post':
case 'posts':
return Boolean(page.__post);
case 'archives':
case 'archive':
return Boolean(page.archive);
case 'categories':
case 'category':
return page.layout === 'categories' || page.layout === 'category';
case 'tags':
case 'tag':
return page.layout === 'tags' || page.layout === 'tag';
case 'about':
return page.layout === 'about';
case 'links':
case 'link':
return page.layout === 'links';
case '404':
return page.layout === '404';
case 'page':
case 'custom':
return Boolean(page.__page);
}
};
hexo.extend.helper.register('in_scope', function(scope) {
if (!scope || scope.length === 0) {
return true;
}
if (Array.isArray(scope)) {
for (const each of scope) {
if (pageInScope(this.page, each)) {
return true;
}
}
} else {
return pageInScope(this.page, scope);
}
return false;
});