discourse/app/assets/javascripts/discourse/helpers/register-unbound.js.es6

36 lines
970 B
Plaintext
Raw Normal View History

const get = Discourse.EmberCompatHandlebars.get;
2014-12-11 13:33:07 -05:00
function resolveParams(ctx, options) {
let params = {};
const hash = options.hash;
if (hash) {
if (options.hashTypes) {
Ember.keys(hash).forEach(function(k) {
const type = options.hashTypes[k];
if (type === "STRING" || type === "StringLiteral") {
params[k] = hash[k];
} else if (type === "ID" || type === "PathExpression") {
params[k] = get(ctx, hash[k], options);
}
});
} else {
params = hash;
}
}
return params;
}
2014-12-11 13:33:07 -05:00
export default function registerUnbound(name, fn) {
2015-04-28 17:05:06 -04:00
const func = function(property, options) {
if (options.types && (options.types[0] === "ID" || options.types[0] === "PathExpression")) {
2014-12-11 13:33:07 -05:00
property = get(this, property, options);
}
2014-12-10 11:34:00 -05:00
return fn.call(this, property, resolveParams(this, options));
2015-04-28 17:05:06 -04:00
};
Handlebars.registerHelper(name, func);
Ember.Handlebars.registerHelper(name, func);
2014-12-10 11:34:00 -05:00
}