add solo helpers

# Conflicts:
#	src/babel/transformation/file/index.js
This commit is contained in:
Sebastian McKenzie 2015-04-11 14:33:56 -07:00
parent 070152f6c1
commit 2a9777cc20

View File

@ -85,6 +85,8 @@ export default class File {
"default-props"
];
static soloHelpers = [];
static options = require("./options");
normalizeOptions(opts: Object) {
@ -375,7 +377,9 @@ export default class File {
}
addHelper(name: string): Object {
if (!includes(File.helpers, name)) {
var isSolo = includes(File.soloHelpers, name);
if (!isSolo && !includes(File.helpers, name)) {
throw new ReferenceError(`Unknown helper ${name}`);
}
@ -386,24 +390,26 @@ export default class File {
this.usedHelpers[name] = true;
var generator = this.get("helperGenerator");
var runtime = this.get("helpersNamespace");
if (generator) {
return generator(name);
} else if (runtime) {
var id = t.identifier(t.toIdentifier(name));
return t.memberExpression(runtime, id);
} else {
var ref = util.template("helper-" + name);
ref._compact = true;
var uid = this.scope.generateUidIdentifier(name);
this.scope.push({
key: name,
id: uid,
init: ref
});
return uid;
if (!isSolo) {
var generator = this.get("helperGenerator");
var runtime = this.get("helpersNamespace");
if (generator) {
return generator(name);
} else if (runtime) {
var id = t.identifier(t.toIdentifier(name));
return t.memberExpression(runtime, id);
}
}
var ref = util.template("helper-" + name);
ref._compact = true;
var uid = this.scope.generateUidIdentifier(name);
this.scope.push({
key: name,
id: uid,
init: ref
});
return uid;
}
errorWithNode(node, msg, Error = SyntaxError) {