summaryrefslogtreecommitdiff
path: root/std/encoding/_yaml/loader/loader_state.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/loader/loader_state.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/loader/loader_state.ts')
-rw-r--r--std/encoding/_yaml/loader/loader_state.ts74
1 files changed, 74 insertions, 0 deletions
diff --git a/std/encoding/_yaml/loader/loader_state.ts b/std/encoding/_yaml/loader/loader_state.ts
new file mode 100644
index 000000000..ca50fcaf1
--- /dev/null
+++ b/std/encoding/_yaml/loader/loader_state.ts
@@ -0,0 +1,74 @@
+// 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 { Schema, SchemaDefinition, TypeMap } from "../schema.ts";
+import { State } from "../state.ts";
+import { Type } from "../type.ts";
+import { Any, ArrayObject } from "../utils.ts";
+
+export interface LoaderStateOptions {
+ legacy?: boolean;
+ listener?: ((...args: Any[]) => void) | null;
+ /** string to be used as a file path in error/warning messages. */
+ filename?: string;
+ /** specifies a schema to use. */
+ schema?: SchemaDefinition;
+ /** compatibility with JSON.parse behaviour. */
+ json?: boolean;
+ /** function to call on warning messages. */
+ onWarning?(this: null, e?: YAMLError): void;
+}
+
+export type ResultType = [] | {} | string;
+
+export class LoaderState extends State {
+ public documents: Any[] = [];
+ public length: number;
+ public lineIndent = 0;
+ public lineStart = 0;
+ public position = 0;
+ public line = 0;
+ public filename?: string;
+ public onWarning?: (...args: Any[]) => void;
+ public legacy: boolean;
+ public json: boolean;
+ public listener?: ((...args: Any[]) => void) | null;
+ public implicitTypes: Type[];
+ public typeMap: TypeMap;
+
+ public version?: string | null;
+ public checkLineBreaks?: boolean;
+ public tagMap?: ArrayObject;
+ public anchorMap?: ArrayObject;
+ public tag?: string | null;
+ public anchor?: string | null;
+ public kind?: string | null;
+ public result: ResultType | null = "";
+
+ constructor(
+ public input: string,
+ {
+ filename,
+ schema,
+ onWarning,
+ legacy = false,
+ json = false,
+ listener = null,
+ }: LoaderStateOptions
+ ) {
+ super(schema);
+ this.filename = filename;
+ this.onWarning = onWarning;
+ this.legacy = legacy;
+ this.json = json;
+ this.listener = listener;
+
+ this.implicitTypes = (this.schema as Schema).compiledImplicit;
+ this.typeMap = (this.schema as Schema).compiledTypeMap;
+
+ this.length = input.length;
+ }
+}