summaryrefslogtreecommitdiff
path: root/std/encoding/yaml/schema.ts
diff options
context:
space:
mode:
authorNayeem Rahman <nayeemrmn99@gmail.com>2020-05-09 13:34:47 +0100
committerGitHub <noreply@github.com>2020-05-09 08:34:47 -0400
commitf184332c09c851faac50f598d29ebe4426e05464 (patch)
tree2659aba63702537fcde1bb64ddeafea1e5863f3e /std/encoding/yaml/schema.ts
parent2b02535028f868ea8dfc471c4921a237747ccd4a (diff)
BREAKING(std): reorganization (#5087)
* Prepend underscores to private modules * Remove collectUint8Arrays() It would be a misuse of Deno.iter()'s result. * Move std/_util/async.ts to std/async * Move std/util/sha*.ts to std/hash
Diffstat (limited to 'std/encoding/yaml/schema.ts')
-rw-r--r--std/encoding/yaml/schema.ts101
1 files changed, 0 insertions, 101 deletions
diff --git a/std/encoding/yaml/schema.ts b/std/encoding/yaml/schema.ts
deleted file mode 100644
index 579644dbb..000000000
--- a/std/encoding/yaml/schema.ts
+++ /dev/null
@@ -1,101 +0,0 @@
-// Ported from js-yaml v3.13.1:
-// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da
-// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license.
-// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
-
-import { YAMLError } from "./error.ts";
-import { KindType, Type } from "./type.ts";
-import { ArrayObject, Any } from "./utils.ts";
-
-function compileList(
- schema: Schema,
- name: "implicit" | "explicit",
- result: Type[]
-): Type[] {
- const exclude: number[] = [];
-
- for (const includedSchema of schema.include) {
- result = compileList(includedSchema, name, result);
- }
-
- for (const currentType of schema[name]) {
- for (
- let previousIndex = 0;
- previousIndex < result.length;
- previousIndex++
- ) {
- const previousType = result[previousIndex];
- if (
- previousType.tag === currentType.tag &&
- previousType.kind === currentType.kind
- ) {
- exclude.push(previousIndex);
- }
- }
-
- result.push(currentType);
- }
-
- return result.filter((type, index): unknown => !exclude.includes(index));
-}
-
-export type TypeMap = { [k in KindType | "fallback"]: ArrayObject<Type> };
-function compileMap(...typesList: Type[][]): TypeMap {
- const result: TypeMap = {
- fallback: {},
- mapping: {},
- scalar: {},
- sequence: {},
- };
-
- for (const types of typesList) {
- for (const type of types) {
- if (type.kind !== null) {
- result[type.kind][type.tag] = result["fallback"][type.tag] = type;
- }
- }
- }
- return result;
-}
-
-export class Schema implements SchemaDefinition {
- public static SCHEMA_DEFAULT?: Schema;
-
- public implicit: Type[];
- public explicit: Type[];
- public include: Schema[];
-
- public compiledImplicit: Type[];
- public compiledExplicit: Type[];
- public compiledTypeMap: TypeMap;
-
- constructor(definition: SchemaDefinition) {
- this.explicit = definition.explicit || [];
- this.implicit = definition.implicit || [];
- this.include = definition.include || [];
-
- for (const type of this.implicit) {
- if (type.loadKind && type.loadKind !== "scalar") {
- throw new YAMLError(
- // eslint-disable-next-line max-len
- "There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported."
- );
- }
- }
-
- this.compiledImplicit = compileList(this, "implicit", []);
- this.compiledExplicit = compileList(this, "explicit", []);
- this.compiledTypeMap = compileMap(
- this.compiledImplicit,
- this.compiledExplicit
- );
- }
-
- public static create(): void {}
-}
-
-export interface SchemaDefinition {
- implicit?: Any[];
- explicit?: Type[];
- include?: Schema[];
-}