1234567891011121314151617181920212223242526272829303132333435 |
- import { SemanticAnnotator } from './semantic_annotator.js';
- export const annotators = new Map();
- export const visitors = new Map();
- export function register(annotator) {
- const name = annotator.domain + ':' + annotator.name;
- annotator instanceof SemanticAnnotator
- ? annotators.set(name, annotator)
- : visitors.set(name, annotator);
- }
- export function activate(domain, name) {
- const key = domain + ':' + name;
- const annotator = annotators.get(key) || visitors.get(key);
- if (annotator) {
- annotator.active = true;
- }
- }
- export function deactivate(domain, name) {
- const key = domain + ':' + name;
- const annotator = annotators.get(key) || visitors.get(key);
- if (annotator) {
- annotator.active = false;
- }
- }
- export function annotate(node) {
- for (const annotator of annotators.values()) {
- if (annotator.active) {
- annotator.annotate(node);
- }
- }
- for (const visitor of visitors.values()) {
- if (visitor.active) {
- visitor.visit(node, Object.assign({}, visitor.def));
- }
- }
- }
|