2016-08-31 11:30:51 -04:00
|
|
|
import { get } from 'discourse-common/lib/raw-handlebars';
|
2016-06-30 17:10:08 -04:00
|
|
|
|
2016-05-10 13:45:58 -04:00
|
|
|
// `Ember.Helper` is only available in versions after 1.12
|
|
|
|
export function htmlHelper(fn) {
|
|
|
|
if (Ember.Helper) {
|
|
|
|
return Ember.Helper.helper(function() {
|
2016-05-11 16:25:43 -04:00
|
|
|
return new Handlebars.SafeString(fn.apply(this, Array.prototype.slice.call(arguments)) || '');
|
2016-05-10 13:45:58 -04:00
|
|
|
});
|
|
|
|
} else {
|
|
|
|
return Ember.Handlebars.makeBoundHelper(function() {
|
2016-05-11 16:25:43 -04:00
|
|
|
return new Handlebars.SafeString(fn.apply(this, Array.prototype.slice.call(arguments)) || '');
|
2016-05-10 13:45:58 -04:00
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export function registerHelper(name, fn) {
|
|
|
|
Ember.HTMLBars._registerHelper(name, fn);
|
|
|
|
}
|
|
|
|
|
2015-02-10 17:20:16 -05:00
|
|
|
function resolveParams(ctx, options) {
|
|
|
|
let params = {};
|
|
|
|
const hash = options.hash;
|
2015-01-07 14:20:17 -05:00
|
|
|
|
|
|
|
if (hash) {
|
|
|
|
if (options.hashTypes) {
|
2016-04-28 16:37:20 -04:00
|
|
|
Object.keys(hash).forEach(function(k) {
|
2015-02-10 17:20:16 -05:00
|
|
|
const type = options.hashTypes[k];
|
2016-01-15 11:40:30 -05:00
|
|
|
if (type === "STRING" || type === "StringLiteral") {
|
2015-01-07 14:20:17 -05:00
|
|
|
params[k] = hash[k];
|
2016-01-15 11:40:30 -05:00
|
|
|
} else if (type === "ID" || type === "PathExpression") {
|
2015-02-10 17:20:16 -05:00
|
|
|
params[k] = get(ctx, hash[k], options);
|
2015-01-07 14:20:17 -05:00
|
|
|
}
|
|
|
|
});
|
|
|
|
} else {
|
|
|
|
params = hash;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return params;
|
|
|
|
}
|
|
|
|
|
2016-05-10 13:45:58 -04:00
|
|
|
export function registerUnbound(name, fn) {
|
2015-04-28 17:05:06 -04:00
|
|
|
const func = function(property, options) {
|
2016-01-15 11:40:30 -05:00
|
|
|
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
|
|
|
|
2015-02-10 17:20:16 -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
|
|
|
}
|