51 lines
1.1 KiB
JavaScript
51 lines
1.1 KiB
JavaScript
|
/* 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;
|
||
|
});
|