@glimmer/compiler
Version:
45 lines • 4.8 kB
JavaScript
export function processOpcodes(compiler, opcodes) {
for (var i = 0, l = opcodes.length; i < l; i++) {
var method = opcodes[i][0];
var params = opcodes[i][1];
if (params) {
compiler[method].apply(compiler, params);
} else {
compiler[method].call(compiler);
}
}
}
// There is a small whitelist of namespaced attributes specially
// enumerated in
// https://www.w3.org/TR/html/syntax.html#attributes-0
//
// > When a foreign element has one of the namespaced attributes given by
// > the local name and namespace of the first and second cells of a row
// > from the following table, it must be written using the name given by
// > the third cell from the same row.
//
// In all other cases, colons are interpreted as a regular character
// with no special meaning:
//
// > No other namespaced attribute can be expressed in the HTML syntax.
var XLINK = 'http://www.w3.org/1999/xlink';
var XML = 'http://www.w3.org/XML/1998/namespace';
var XMLNS = 'http://www.w3.org/2000/xmlns/';
var WHITELIST = {
'xlink:actuate': XLINK,
'xlink:arcrole': XLINK,
'xlink:href': XLINK,
'xlink:role': XLINK,
'xlink:show': XLINK,
'xlink:title': XLINK,
'xlink:type': XLINK,
'xml:base': XML,
'xml:lang': XML,
'xml:space': XML,
xmlns: XMLNS,
'xmlns:xlink': XMLNS
};
export function getAttrNamespace(attrName) {
return WHITELIST[attrName] || null;
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2xpYi91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiT0FFTSxTQUFBLGNBQUEsQ0FBQSxRQUFBLEVBQUEsT0FBQSxFQUFvRDtBQUN4RCxTQUFLLElBQUksSUFBSixDQUFBLEVBQVcsSUFBSSxRQUFwQixNQUFBLEVBQW9DLElBQXBDLENBQUEsRUFBQSxHQUFBLEVBQWdEO0FBQzlDLFlBQUksU0FBUyxRQUFBLENBQUEsRUFBYixDQUFhLENBQWI7QUFDQSxZQUFJLFNBQVMsUUFBQSxDQUFBLEVBQWIsQ0FBYSxDQUFiO0FBQ0EsWUFBQSxNQUFBLEVBQVk7QUFDVixxQkFBQSxNQUFBLEVBQUEsS0FBQSxDQUFBLFFBQUEsRUFBQSxNQUFBO0FBREYsU0FBQSxNQUVPO0FBQ0wscUJBQUEsTUFBQSxFQUFBLElBQUEsQ0FBQSxRQUFBO0FBQ0Q7QUFDRjtBQUNGO0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQSxJQUFNLFFBQU4sOEJBQUE7QUFDQSxJQUFNLE1BQU4sc0NBQUE7QUFDQSxJQUFNLFFBQU4sK0JBQUE7QUFFQSxJQUFNLFlBQXNDO0FBQzFDLHFCQUQwQyxLQUFBO0FBRTFDLHFCQUYwQyxLQUFBO0FBRzFDLGtCQUgwQyxLQUFBO0FBSTFDLGtCQUowQyxLQUFBO0FBSzFDLGtCQUwwQyxLQUFBO0FBTTFDLG1CQU4wQyxLQUFBO0FBTzFDLGtCQVAwQyxLQUFBO0FBUTFDLGdCQVIwQyxHQUFBO0FBUzFDLGdCQVQwQyxHQUFBO0FBVTFDLGlCQVYwQyxHQUFBO0FBVzFDLFdBWDBDLEtBQUE7QUFZMUMsbUJBQWU7QUFaMkIsQ0FBNUM7QUFlQSxPQUFNLFNBQUEsZ0JBQUEsQ0FBQSxRQUFBLEVBQTJDO0FBQy9DLFdBQU8sVUFBQSxRQUFBLEtBQVAsSUFBQTtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGljdCwgT3B0aW9uIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZXNzT3Bjb2Rlcyhjb21waWxlcjogYW55LCBvcGNvZGVzOiBhbnkpIHtcbiAgZm9yIChsZXQgaSA9IDAsIGwgPSBvcGNvZGVzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGxldCBtZXRob2QgPSBvcGNvZGVzW2ldWzBdO1xuICAgIGxldCBwYXJhbXMgPSBvcGNvZGVzW2ldWzFdO1xuICAgIGlmIChwYXJhbXMpIHtcbiAgICAgIGNvbXBpbGVyW21ldGhvZF0uYXBwbHkoY29tcGlsZXIsIHBhcmFtcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbXBpbGVyW21ldGhvZF0uY2FsbChjb21waWxlcik7XG4gICAgfVxuICB9XG59XG5cbi8vIFRoZXJlIGlzIGEgc21hbGwgd2hpdGVsaXN0IG9mIG5hbWVzcGFjZWQgYXR0cmlidXRlcyBzcGVjaWFsbHlcbi8vIGVudW1lcmF0ZWQgaW5cbi8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9odG1sL3N5bnRheC5odG1sI2F0dHJpYnV0ZXMtMFxuLy9cbi8vID4gV2hlbiBhIGZvcmVpZ24gZWxlbWVudCBoYXMgb25lIG9mIHRoZSBuYW1lc3BhY2VkIGF0dHJpYnV0ZXMgZ2l2ZW4gYnlcbi8vID4gdGhlIGxvY2FsIG5hbWUgYW5kIG5hbWVzcGFjZSBvZiB0aGUgZmlyc3QgYW5kIHNlY29uZCBjZWxscyBvZiBhIHJvd1xuLy8gPiBmcm9tIHRoZSBmb2xsb3dpbmcgdGFibGUsIGl0IG11c3QgYmUgd3JpdHRlbiB1c2luZyB0aGUgbmFtZSBnaXZlbiBieVxuLy8gPiB0aGUgdGhpcmQgY2VsbCBmcm9tIHRoZSBzYW1lIHJvdy5cbi8vXG4vLyBJbiBhbGwgb3RoZXIgY2FzZXMsIGNvbG9ucyBhcmUgaW50ZXJwcmV0ZWQgYXMgYSByZWd1bGFyIGNoYXJhY3RlclxuLy8gd2l0aCBubyBzcGVjaWFsIG1lYW5pbmc6XG4vL1xuLy8gPiBObyBvdGhlciBuYW1lc3BhY2VkIGF0dHJpYnV0ZSBjYW4gYmUgZXhwcmVzc2VkIGluIHRoZSBIVE1MIHN5bnRheC5cblxuY29uc3QgWExJTksgPSAnaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayc7XG5jb25zdCBYTUwgPSAnaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlJztcbmNvbnN0IFhNTE5TID0gJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvJztcblxuY29uc3QgV0hJVEVMSVNUOiBEaWN0PHN0cmluZyB8IHVuZGVmaW5lZD4gPSB7XG4gICd4bGluazphY3R1YXRlJzogWExJTkssXG4gICd4bGluazphcmNyb2xlJzogWExJTkssXG4gICd4bGluazpocmVmJzogWExJTkssXG4gICd4bGluazpyb2xlJzogWExJTkssXG4gICd4bGluazpzaG93JzogWExJTkssXG4gICd4bGluazp0aXRsZSc6IFhMSU5LLFxuICAneGxpbms6dHlwZSc6IFhMSU5LLFxuICAneG1sOmJhc2UnOiBYTUwsXG4gICd4bWw6bGFuZyc6IFhNTCxcbiAgJ3htbDpzcGFjZSc6IFhNTCxcbiAgeG1sbnM6IFhNTE5TLFxuICAneG1sbnM6eGxpbmsnOiBYTUxOUyxcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBdHRyTmFtZXNwYWNlKGF0dHJOYW1lOiBzdHJpbmcpOiBPcHRpb248c3RyaW5nPiB7XG4gIHJldHVybiBXSElURUxJU1RbYXR0ck5hbWVdIHx8IG51bGw7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9