MCPcopy Create free account
hub / github.com/charto/cxml / jsxRegister

Method jsxRegister

src/parser/ParserConfig.ts:266–290  ·  view source on GitHub ↗
(spec: Module, handler?: (result: Module) => Result)

Source from the content-addressed store, hash-verified

264 jsxRegister<Module extends XModuleTable, Result>(spec: Module, handler?: (result: Module) => Result): Result;
265
266 jsxRegister<Module extends XModuleTable, Result>(spec: Module, handler?: (result: Module) => Result) {
267 const result: { [prefix: string]: { [name: string]: OpenToken | StringToken }} = {};
268 let token: OpenToken | StringToken;
269
270 for(let prefix of Object.keys(spec)) {
271 const elements = (spec as any)[prefix];
272 const uri = elements.xmlns;
273 const ns = this.getNamespace(uri) || new Namespace(prefix, uri);
274 result[prefix] = {};
275
276 for(let name of Object.keys(elements)) {
277 if(name == 'xmlns') continue;
278
279 if(elements[name]) {
280 token = this.getElementTokens(ns, name)[TokenKind.open]!;
281 } else {
282 token = this.getAttributeTokens(ns, name)[TokenKind.string]!;
283 }
284
285 result[prefix][name] = token;
286 }
287 }
288
289 return(handler ? handler(result as Module) : result as Module);
290 }
291
292 getElementTokens(ns: Namespace, name: string) {
293 const id = this.addNamespace(ns);

Callers

nothing calls this directly

Calls 3

getNamespaceMethod · 0.95
getElementTokensMethod · 0.95
getAttributeTokensMethod · 0.95

Tested by

no test coverage detected