@glimmer/compiler
Version:
77 lines (71 loc) • 9.69 kB
JavaScript
var _CurriedTypeToReadabl;
import { ASTv2, generateSyntaxError } from '@glimmer/syntax';
import { Err, Ok, Result } from '../../../../shared/result';
import * as mir from '../../../2-encoding/mir';
import { VISIT_EXPRS } from '../../visitors/expressions';
var CurriedTypeToReadableType = (_CurriedTypeToReadabl = {}, _CurriedTypeToReadabl[0
/* Component */
] = 'component', _CurriedTypeToReadabl[1
/* Helper */
] = 'helper', _CurriedTypeToReadabl[2
/* Modifier */
] = 'modifier', _CurriedTypeToReadabl);
export function assertCurryKeyword(curriedType) {
return function (node, state) {
var readableType = CurriedTypeToReadableType[curriedType];
var stringsAllowed = curriedType === 0
/* Component */
;
var args = node.args;
var definition = args.nth(0);
if (definition === null) {
return Err(generateSyntaxError("(" + readableType + ") requires a " + readableType + " definition or identifier as its first positional parameter, did not receive any parameters.", args.loc));
}
if (definition.type === 'Literal') {
if (stringsAllowed && state.isStrict) {
return Err(generateSyntaxError("(" + readableType + ") cannot resolve string values in strict mode templates", node.loc));
} else if (!stringsAllowed) {
return Err(generateSyntaxError("(" + readableType + ") cannot resolve string values, you must pass a " + readableType + " definition directly", node.loc));
}
}
args = new ASTv2.Args({
positional: new ASTv2.PositionalArguments({
exprs: args.positional.exprs.slice(1),
loc: args.positional.loc
}),
named: args.named,
loc: args.loc
});
return Ok({
definition: definition,
args: args
});
};
}
function translateCurryKeyword(curriedType) {
return function (_ref, _ref2) {
var node = _ref.node,
state = _ref.state;
var definition = _ref2.definition,
args = _ref2.args;
var definitionResult = VISIT_EXPRS.visit(definition, state);
var argsResult = VISIT_EXPRS.Args(args, state);
return Result.all(definitionResult, argsResult).mapOk(function (_ref3) {
var definition = _ref3[0],
args = _ref3[1];
return new mir.Curry({
loc: node.loc,
curriedType: curriedType,
definition: definition,
args: args
});
});
};
}
export function curryKeyword(curriedType) {
return {
assert: assertCurryKeyword(curriedType),
translate: translateCurryKeyword(curriedType)
};
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2xpYi9wYXNzZXMvMS1ub3JtYWxpemF0aW9uL2tleXdvcmRzL3V0aWxzL2N1cnJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EsU0FBQSxLQUFBLEVBQUEsbUJBQUEsUUFBQSxpQkFBQTtBQUVBLFNBQUEsR0FBQSxFQUFBLEVBQUEsRUFBQSxNQUFBLFFBQUEsMkJBQUE7QUFDQSxPQUFPLEtBQVAsR0FBQSxNQUFBLHlCQUFBO0FBRUEsU0FBQSxXQUFBLFFBQUEsNEJBQUE7QUFHQSxJQUFNLHlCQUF5QixzREFDN0I7QUFBQTtBQUQ2QixJQUFHLFdBQUgsd0JBRTdCO0FBQUE7QUFGNkIsSUFBRyxRQUFILHdCQUc3QjtBQUFBO0FBSDZCLElBR0wsVUFISyx3QkFBL0I7QUFNQSxPQUFNLFNBQUEsa0JBQUEsQ0FBQSxXQUFBLEVBQXFEO0FBQ3pELFNBQU8sVUFBQSxJQUFBLEVBQUEsS0FBQSxFQU1GO0FBQ0gsUUFBSSxZQUFZLEdBQUcseUJBQXlCLENBQTVDLFdBQTRDLENBQTVDO0FBQ0EsUUFBSSxjQUFjLEdBQUcsV0FBVyxLQUFBO0FBQUE7QUFBaEM7QUFGRyxRQUlHLElBSkgsR0FJSCxJQUpHLENBSUcsSUFKSDtBQU1ILFFBQUksVUFBVSxHQUFHLElBQUksQ0FBSixHQUFBLENBQWpCLENBQWlCLENBQWpCOztBQUVBLFFBQUksVUFBVSxLQUFkLElBQUEsRUFBeUI7QUFDdkIsYUFBTyxHQUFHLENBQ1IsbUJBQW1CLE9BQ2IsWUFEYSxxQkFBQSxZQUFBLG1HQUVqQixJQUFJLENBSFIsR0FDcUIsQ0FEWCxDQUFWO0FBTUQ7O0FBRUQsUUFBSSxVQUFVLENBQVYsSUFBQSxLQUFKLFNBQUEsRUFBbUM7QUFDakMsVUFBSSxjQUFjLElBQUksS0FBSyxDQUEzQixRQUFBLEVBQXNDO0FBQ3BDLGVBQU8sR0FBRyxDQUNSLG1CQUFtQixPQUFBLFlBQUEsOERBRWpCLElBQUksQ0FIUixHQUNxQixDQURYLENBQVY7QUFERixPQUFBLE1BT08sSUFBSSxDQUFKLGNBQUEsRUFBcUI7QUFDMUIsZUFBTyxHQUFHLENBQ1IsbUJBQW1CLE9BQ2IsWUFEYSx3REFBQSxZQUFBLDJCQUVqQixJQUFJLENBSFIsR0FDcUIsQ0FEWCxDQUFWO0FBTUQ7QUFDRjs7QUFFRCxJQUFBLElBQUksR0FBRyxJQUFJLEtBQUssQ0FBVCxJQUFBLENBQWU7QUFDcEIsTUFBQSxVQUFVLEVBQUUsSUFBSSxLQUFLLENBQVQsbUJBQUEsQ0FBOEI7QUFDeEMsUUFBQSxLQUFLLEVBQUUsSUFBSSxDQUFKLFVBQUEsQ0FBQSxLQUFBLENBQUEsS0FBQSxDQURpQyxDQUNqQyxDQURpQztBQUV4QyxRQUFBLEdBQUcsRUFBRSxJQUFJLENBQUosVUFBQSxDQUFnQjtBQUZtQixPQUE5QixDQURRO0FBS3BCLE1BQUEsS0FBSyxFQUFFLElBQUksQ0FMUyxLQUFBO0FBTXBCLE1BQUEsR0FBRyxFQUFFLElBQUksQ0FBQztBQU5VLEtBQWYsQ0FBUDtBQVNBLFdBQU8sRUFBRSxDQUFDO0FBQUUsTUFBQSxVQUFGLEVBQUUsVUFBRjtBQUFjLE1BQUEsSUFBQSxFQUFBO0FBQWQsS0FBRCxDQUFUO0FBbERGLEdBQUE7QUFvREQ7O0FBRUQsU0FBQSxxQkFBQSxDQUFBLFdBQUEsRUFBdUQ7QUFDckQsU0FBTyx1QkFNZ0I7QUFBQSxRQUxyQixJQUtxQixRQUxyQixJQUtxQjtBQUFBLFFBSG5CLEtBR21CLFFBSG5CLEtBR21CO0FBQUEsUUFEckIsVUFDcUIsU0FEckIsVUFDcUI7QUFBQSxRQURQLElBQ08sU0FEUCxJQUNPO0FBQ3JCLFFBQUksZ0JBQWdCLEdBQUcsV0FBVyxDQUFYLEtBQUEsQ0FBQSxVQUFBLEVBQXZCLEtBQXVCLENBQXZCO0FBQ0EsUUFBSSxVQUFVLEdBQUcsV0FBVyxDQUFYLElBQUEsQ0FBQSxJQUFBLEVBQWpCLEtBQWlCLENBQWpCO0FBRUEsV0FBTyxNQUFNLENBQU4sR0FBQSxDQUFBLGdCQUFBLEVBQUEsVUFBQSxFQUFBLEtBQUEsQ0FDTDtBQUFBLFVBQUMsVUFBRDtBQUFBLFVBQUEsSUFBQTtBQUFBLGFBQ0UsSUFBSSxHQUFHLENBQVAsS0FBQSxDQUFjO0FBQ1osUUFBQSxHQUFHLEVBQUUsSUFBSSxDQURHLEdBQUE7QUFFWixRQUFBLFdBRlksRUFFWixXQUZZO0FBR1osUUFBQSxVQUhZLEVBR1osVUFIWTtBQUlaLFFBQUEsSUFBQSxFQUFBO0FBSlksT0FBZCxDQURGO0FBQUEsS0FESyxDQUFQO0FBVkYsR0FBQTtBQW9CRDs7QUFFRCxPQUFNLFNBQUEsWUFBQSxDQUFBLFdBQUEsRUFDb0I7QUFNeEIsU0FBTztBQUNMLElBQUEsTUFBTSxFQUFFLGtCQUFrQixDQURyQixXQUNxQixDQURyQjtBQUVMLElBQUEsU0FBUyxFQUFFLHFCQUFxQixDQUFBLFdBQUE7QUFGM0IsR0FBUDtBQUlEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ3VycmllZFR5cGUgfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEFTVHYyLCBnZW5lcmF0ZVN5bnRheEVycm9yIH0gZnJvbSAnQGdsaW1tZXIvc3ludGF4JztcblxuaW1wb3J0IHsgRXJyLCBPaywgUmVzdWx0IH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL3Jlc3VsdCc7XG5pbXBvcnQgKiBhcyBtaXIgZnJvbSAnLi4vLi4vLi4vMi1lbmNvZGluZy9taXInO1xuaW1wb3J0IHsgTm9ybWFsaXphdGlvblN0YXRlIH0gZnJvbSAnLi4vLi4vY29udGV4dCc7XG5pbXBvcnQgeyBWSVNJVF9FWFBSUyB9IGZyb20gJy4uLy4uL3Zpc2l0b3JzL2V4cHJlc3Npb25zJztcbmltcG9ydCB7IEtleXdvcmREZWxlZ2F0ZSB9IGZyb20gJy4uL2ltcGwnO1xuXG5jb25zdCBDdXJyaWVkVHlwZVRvUmVhZGFibGVUeXBlID0ge1xuICBbQ3VycmllZFR5cGUuQ29tcG9uZW50XTogJ2NvbXBvbmVudCcsXG4gIFtDdXJyaWVkVHlwZS5IZWxwZXJdOiAnaGVscGVyJyxcbiAgW0N1cnJpZWRUeXBlLk1vZGlmaWVyXTogJ21vZGlmaWVyJyxcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRDdXJyeUtleXdvcmQoY3VycmllZFR5cGU6IEN1cnJpZWRUeXBlKSB7XG4gIHJldHVybiAoXG4gICAgbm9kZTogQVNUdjIuQXBwZW5kQ29udGVudCB8IEFTVHYyLkludm9rZUJsb2NrIHwgQVNUdjIuQ2FsbEV4cHJlc3Npb24sXG4gICAgc3RhdGU6IE5vcm1hbGl6YXRpb25TdGF0ZVxuICApOiBSZXN1bHQ8e1xuICAgIGRlZmluaXRpb246IEFTVHYyLkV4cHJlc3Npb25Ob2RlO1xuICAgIGFyZ3M6IEFTVHYyLkFyZ3M7XG4gIH0+ID0+IHtcbiAgICBsZXQgcmVhZGFibGVUeXBlID0gQ3VycmllZFR5cGVUb1JlYWRhYmxlVHlwZVtjdXJyaWVkVHlwZV07XG4gICAgbGV0IHN0cmluZ3NBbGxvd2VkID0gY3VycmllZFR5cGUgPT09IEN1cnJpZWRUeXBlLkNvbXBvbmVudDtcblxuICAgIGxldCB7IGFyZ3MgfSA9IG5vZGU7XG5cbiAgICBsZXQgZGVmaW5pdGlvbiA9IGFyZ3MubnRoKDApO1xuXG4gICAgaWYgKGRlZmluaXRpb24gPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBFcnIoXG4gICAgICAgIGdlbmVyYXRlU3ludGF4RXJyb3IoXG4gICAgICAgICAgYCgke3JlYWRhYmxlVHlwZX0pIHJlcXVpcmVzIGEgJHtyZWFkYWJsZVR5cGV9IGRlZmluaXRpb24gb3IgaWRlbnRpZmllciBhcyBpdHMgZmlyc3QgcG9zaXRpb25hbCBwYXJhbWV0ZXIsIGRpZCBub3QgcmVjZWl2ZSBhbnkgcGFyYW1ldGVycy5gLFxuICAgICAgICAgIGFyZ3MubG9jXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGRlZmluaXRpb24udHlwZSA9PT0gJ0xpdGVyYWwnKSB7XG4gICAgICBpZiAoc3RyaW5nc0FsbG93ZWQgJiYgc3RhdGUuaXNTdHJpY3QpIHtcbiAgICAgICAgcmV0dXJuIEVycihcbiAgICAgICAgICBnZW5lcmF0ZVN5bnRheEVycm9yKFxuICAgICAgICAgICAgYCgke3JlYWRhYmxlVHlwZX0pIGNhbm5vdCByZXNvbHZlIHN0cmluZyB2YWx1ZXMgaW4gc3RyaWN0IG1vZGUgdGVtcGxhdGVzYCxcbiAgICAgICAgICAgIG5vZGUubG9jXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmICghc3RyaW5nc0FsbG93ZWQpIHtcbiAgICAgICAgcmV0dXJuIEVycihcbiAgICAgICAgICBnZW5lcmF0ZVN5bnRheEVycm9yKFxuICAgICAgICAgICAgYCgke3JlYWRhYmxlVHlwZX0pIGNhbm5vdCByZXNvbHZlIHN0cmluZyB2YWx1ZXMsIHlvdSBtdXN0IHBhc3MgYSAke3JlYWRhYmxlVHlwZX0gZGVmaW5pdGlvbiBkaXJlY3RseWAsXG4gICAgICAgICAgICBub2RlLmxvY1xuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhcmdzID0gbmV3IEFTVHYyLkFyZ3Moe1xuICAgICAgcG9zaXRpb25hbDogbmV3IEFTVHYyLlBvc2l0aW9uYWxBcmd1bWVudHMoe1xuICAgICAgICBleHByczogYXJncy5wb3NpdGlvbmFsLmV4cHJzLnNsaWNlKDEpLFxuICAgICAgICBsb2M6IGFyZ3MucG9zaXRpb25hbC5sb2MsXG4gICAgICB9KSxcbiAgICAgIG5hbWVkOiBhcmdzLm5hbWVkLFxuICAgICAgbG9jOiBhcmdzLmxvYyxcbiAgICB9KTtcblxuICAgIHJldHVybiBPayh7IGRlZmluaXRpb24sIGFyZ3MgfSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHRyYW5zbGF0ZUN1cnJ5S2V5d29yZChjdXJyaWVkVHlwZTogQ3VycmllZFR5cGUpIHtcbiAgcmV0dXJuIChcbiAgICB7XG4gICAgICBub2RlLFxuICAgICAgc3RhdGUsXG4gICAgfTogeyBub2RlOiBBU1R2Mi5DYWxsRXhwcmVzc2lvbiB8IEFTVHYyLkFwcGVuZENvbnRlbnQ7IHN0YXRlOiBOb3JtYWxpemF0aW9uU3RhdGUgfSxcbiAgICB7IGRlZmluaXRpb24sIGFyZ3MgfTogeyBkZWZpbml0aW9uOiBBU1R2Mi5FeHByZXNzaW9uTm9kZTsgYXJnczogQVNUdjIuQXJncyB9XG4gICk6IFJlc3VsdDxtaXIuQ3Vycnk+ID0+IHtcbiAgICBsZXQgZGVmaW5pdGlvblJlc3VsdCA9IFZJU0lUX0VYUFJTLnZpc2l0KGRlZmluaXRpb24sIHN0YXRlKTtcbiAgICBsZXQgYXJnc1Jlc3VsdCA9IFZJU0lUX0VYUFJTLkFyZ3MoYXJncywgc3RhdGUpO1xuXG4gICAgcmV0dXJuIFJlc3VsdC5hbGwoZGVmaW5pdGlvblJlc3VsdCwgYXJnc1Jlc3VsdCkubWFwT2soXG4gICAgICAoW2RlZmluaXRpb24sIGFyZ3NdKSA9PlxuICAgICAgICBuZXcgbWlyLkN1cnJ5KHtcbiAgICAgICAgICBsb2M6IG5vZGUubG9jLFxuICAgICAgICAgIGN1cnJpZWRUeXBlLFxuICAgICAgICAgIGRlZmluaXRpb24sXG4gICAgICAgICAgYXJncyxcbiAgICAgICAgfSlcbiAgICApO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3VycnlLZXl3b3JkKFxuICBjdXJyaWVkVHlwZTogQ3VycmllZFR5cGVcbik6IEtleXdvcmREZWxlZ2F0ZTxcbiAgQVNUdjIuQ2FsbEV4cHJlc3Npb24gfCBBU1R2Mi5BcHBlbmRDb250ZW50LFxuICB7IGRlZmluaXRpb246IEFTVHYyLkV4cHJlc3Npb25Ob2RlOyBhcmdzOiBBU1R2Mi5BcmdzIH0sXG4gIG1pci5DdXJyeVxuPiB7XG4gIHJldHVybiB7XG4gICAgYXNzZXJ0OiBhc3NlcnRDdXJyeUtleXdvcmQoY3VycmllZFR5cGUpLFxuICAgIHRyYW5zbGF0ZTogdHJhbnNsYXRlQ3VycnlLZXl3b3JkKGN1cnJpZWRUeXBlKSxcbiAgfTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=