gpreview
Version:
Preview Ghost themes locally without a full Ghost installation
142 lines • 5.6 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.registerHelpers = registerHelpers;
const asset_1 = require("./asset");
const bodyClass_1 = require("./bodyClass");
const postClass_1 = require("./postClass");
const ghostHead_1 = require("./ghostHead");
const ghostFoot_1 = require("./ghostFoot");
const foreach_1 = require("./foreach");
const navigation_1 = require("./navigation");
const date_1 = require("./date");
const excerpt_1 = require("./excerpt");
const imgUrl_1 = require("./imgUrl");
const get_1 = require("./get");
const is_1 = require("./is");
const has_1 = require("./has");
const unless_1 = require("./unless");
const content_1 = require("./content");
const tags_1 = require("./tags");
const authors_1 = require("./authors");
const meta_1 = require("./meta");
const pagination_1 = require("./pagination");
const plural_1 = require("./plural");
const encode_1 = require("./encode");
const title_1 = require("./title");
const url_1 = require("./url");
function registerHelpers(handlebars) {
handlebars.registerHelper('asset', asset_1.assetHelper);
handlebars.registerHelper('body_class', bodyClass_1.bodyClassHelper);
handlebars.registerHelper('post_class', postClass_1.postClassHelper);
handlebars.registerHelper('ghost_head', ghostHead_1.ghostHeadHelper);
handlebars.registerHelper('ghost_foot', ghostFoot_1.ghostFootHelper);
handlebars.registerHelper('foreach', foreach_1.foreachHelper);
handlebars.registerHelper('get', get_1.getHelper);
handlebars.registerHelper('is', is_1.isHelper);
handlebars.registerHelper('has', has_1.hasHelper);
handlebars.registerHelper('unless', unless_1.unlessHelper);
handlebars.registerHelper('content', content_1.contentHelper);
handlebars.registerHelper('excerpt', excerpt_1.excerptHelper);
handlebars.registerHelper('title', title_1.titleHelper);
handlebars.registerHelper('tags', tags_1.tagsHelper);
handlebars.registerHelper('authors', authors_1.authorsHelper);
handlebars.registerHelper('date', date_1.dateHelper);
handlebars.registerHelper('img_url', imgUrl_1.imgUrlHelper);
handlebars.registerHelper('url', url_1.urlHelper);
handlebars.registerHelper('navigation', navigation_1.navigationHelper);
handlebars.registerHelper('pagination', pagination_1.paginationHelper);
handlebars.registerHelper('meta_title', meta_1.metaHelper.title);
handlebars.registerHelper('meta_description', meta_1.metaHelper.description);
handlebars.registerHelper('plural', plural_1.pluralHelper);
handlebars.registerHelper('encode', encode_1.encodeHelper);
handlebars.registerHelper('block', function (_name) {
return new handlebars.SafeString('');
});
handlebars.registerHelper('contentFor', function (_name, _options) {
return new handlebars.SafeString('');
});
handlebars.registerHelper('concat', function (...args) {
const values = args.slice(0, -1);
return values.join('');
});
handlebars.registerHelper('else', function (...args) {
if (args.length >= 3 && args[0] === 'match') {
args.shift();
return handlebars.helpers.match.apply(this, args);
}
return '';
});
handlebars.registerHelper('match', function (...args) {
let a, operator, b, options;
if (args.length === 2 && typeof args[1] === 'object' && args[1] !== null && 'fn' in args[1] && 'inverse' in args[1]) {
a = args[0];
options = args[1];
const result = !!a;
if (result) {
return options.fn ? options.fn(this) : '';
}
else {
return options.inverse ? options.inverse(this) : '';
}
}
else if (args.length === 3 && typeof args[2] === 'object' && args[2] !== null && 'fn' in args[2] && 'inverse' in args[2]) {
a = args[0];
operator = '==';
b = args[1];
options = args[2];
}
else if (args.length === 4) {
a = args[0];
operator = String(args[1]);
b = args[2];
options = args[3];
}
else {
throw new Error('Invalid arguments for match helper');
}
let result = false;
switch (operator) {
case '=':
case '==':
result = a == b;
break;
case '===':
result = a === b;
break;
case '!=':
result = a != b;
break;
case '!==':
result = a !== b;
break;
case '<':
result = a < b;
break;
case '>':
result = a > b;
break;
case '<=':
result = a <= b;
break;
case '>=':
result = a >= b;
break;
default:
if (typeof options === 'undefined' && b && typeof b === 'object' && b !== null && 'fn' in b && 'inverse' in b) {
options = b;
b = operator;
result = a == b;
}
else {
throw new Error(`Unknown operator: ${operator}`);
}
}
if (result) {
return options.fn ? options.fn(this) : '';
}
else {
return options.inverse ? options.inverse(this) : '';
}
});
}
//# sourceMappingURL=index.js.map