proc_macro
Version:
A JavaScript implementation of proc_macros.
29 lines • 1.1 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var token_stream_1 = __importDefault(require("./token_stream"));
/**
* Wrapper function to create the proc_macro tagged template function.
* @param parsingFunction Function used to parse input.
*/
function proc_macro(parsingFunction) {
return function (strings) {
var keys = [];
for (var _i = 1; _i < arguments.length; _i++) {
keys[_i - 1] = arguments[_i];
}
var tokenString = strings.map(function (str, i) { return str + (keys[i] || ''); }).join('');
try {
var tokenStream = token_stream_1.default.tokenize(tokenString);
var parseOutput = parsingFunction(tokenStream);
return (typeof parseOutput === 'string') ? parseOutput : parseOutput.toJavaScript();
}
catch (e) {
throw e;
}
};
}
exports.default = proc_macro;
//# sourceMappingURL=proc_macro.js.map