This repository has been archived on 2023-08-20. You can view files and clone it, but cannot push or open issues or pull requests.
admin-panel/graphql-types/node_modules/yaml-ast-parser/test/visitor.ts

44 lines
1.5 KiB
TypeScript

import * as YAML from '../src/'
export interface NodeVisitor {
visitScalar(node: YAML.YAMLScalar);
visitMapping(node: YAML.YAMLMapping);
visitSequence(node: YAML.YAMLSequence);
visitMap(node: YAML.YamlMap);
visitAnchorRef(node: YAML.YAMLAnchorReference);
visitIncludeRef(node: YAML.YAMLNode);
}
export abstract class AbstractVisitor implements NodeVisitor {
// Needed in lieu of `accept` method on nodes
accept(node: YAML.YAMLNode) {
switch (node.kind) {
case YAML.Kind.SCALAR: {
return this.visitScalar(<YAML.YAMLScalar>node);
}
case YAML.Kind.MAP: {
return this.visitMap(<YAML.YamlMap>node);
}
case YAML.Kind.MAPPING: {
return this.visitMapping(<YAML.YAMLMapping>node);
}
case YAML.Kind.SEQ: {
return this.visitSequence(<YAML.YAMLSequence>node);
}
case YAML.Kind.ANCHOR_REF: {
return this.visitAnchorRef(<YAML.YAMLAnchorReference>node);
}
case YAML.Kind.INCLUDE_REF: {
return this.visitIncludeRef(node);
}
}
throw new Error(`Kind, ${node.kind} not implemented.`);
}
abstract visitScalar(node: YAML.YAMLScalar);
abstract visitMapping(node: YAML.YAMLMapping);
abstract visitSequence(node: YAML.YAMLSequence);
abstract visitMap(node: YAML.YamlMap);
abstract visitAnchorRef(node: YAML.YAMLAnchorReference);
abstract visitIncludeRef(node: YAML.YAMLNode);
}