mirror of
https://github.com/denoland/deno.git
synced 2024-12-27 01:29:14 -05:00
c3a205bae8
Corrections made: * cli/js/tests/README.md:44:7: corrected "discoveres" to "discovers" * cli/js/tests/chown_test.ts:111:37: corrected "priviledge" to "privilege" * cli/worker.rs:231:56: corrected "decendants" to "descendants" * deno_typescript/lib.rs:136:50: corrected "emmited" to "emitted" * core/es_isolate.rs:492:67: corrected "registerd" to "registered" * core/isolate.rs:103:28: corrected "initalize" to "initialize" * docs/runtime.md:29:14: corrected "ect" to "etc" * docs/tools/debugger.md:122:16: corrected "implementes" to "implements" * std/encoding/_yaml/dumper/dumper_state.ts:57:63: corrected "everwhere" to "everywhere" * std/encoding/csv.ts:37:43: corrected "referal" to "referral" * std/fmt/sprintf.ts:209:20: corrected "unusuable" to "unusable" * std/fmt/README.md:21:40: corrected "Alternativly" to "Alternatively" * std/fmt/README.md:35:68: corrected "seperated" to "separated" * std/fmt/README.md:179:59: corrected "provded" to "provided" * std/mime/multipart.ts:581:46: corrected "writen" to "written" * std/path/_globrex.ts:19:52: corrected "equivelant" to "equivalent" * std/node/events_test.ts:447:9: corrected "asyncronous" to "asynchronous" * std/node/events_test.ts:475:9: corrected "asyncronous" to "asynchronous" * std/node/events_test.ts:500:29: corrected "asyncronous" to "asynchronous" * std/node/events_test.ts:530:40: corrected "asyncronous" to "asynchronous" * std/node/events_test.ts:555:9: corrected "asyncronous" to "asynchronous" * tools/deno_tcp_proxy.ts:1:42: corrected "perfromance" to "performance" * std/node/module.ts:1003:18: corrected "existend" to "existed"
141 lines
4.5 KiB
TypeScript
141 lines
4.5 KiB
TypeScript
// 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 { Schema, SchemaDefinition } from "../schema.ts";
|
|
import { State } from "../state.ts";
|
|
import { StyleVariant, Type } from "../type.ts";
|
|
import { ArrayObject, Any } from "../utils.ts";
|
|
|
|
const _hasOwnProperty = Object.prototype.hasOwnProperty;
|
|
|
|
function compileStyleMap(
|
|
schema: Schema,
|
|
map?: ArrayObject<StyleVariant> | null
|
|
): ArrayObject<StyleVariant> {
|
|
if (typeof map === "undefined" || map === null) return {};
|
|
|
|
let type: Type;
|
|
const result: ArrayObject<StyleVariant> = {};
|
|
const keys = Object.keys(map);
|
|
let tag: string, style: StyleVariant;
|
|
for (let index = 0, length = keys.length; index < length; index += 1) {
|
|
tag = keys[index];
|
|
style = String(map[tag]) as StyleVariant;
|
|
if (tag.slice(0, 2) === "!!") {
|
|
tag = `tag:yaml.org,2002:${tag.slice(2)}`;
|
|
}
|
|
type = schema.compiledTypeMap.fallback[tag];
|
|
|
|
if (
|
|
type &&
|
|
typeof type.styleAliases !== "undefined" &&
|
|
_hasOwnProperty.call(type.styleAliases, style)
|
|
) {
|
|
style = type.styleAliases[style];
|
|
}
|
|
|
|
result[tag] = style;
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
export interface DumperStateOptions {
|
|
/** indentation width to use (in spaces). */
|
|
indent?: number;
|
|
/** when true, will not add an indentation level to array elements */
|
|
noArrayIndent?: boolean;
|
|
/**
|
|
* do not throw on invalid types (like function in the safe schema)
|
|
* and skip pairs and single values with such types.
|
|
*/
|
|
skipInvalid?: boolean;
|
|
/**
|
|
* specifies level of nesting, when to switch from
|
|
* block to flow style for collections. -1 means block style everywhere
|
|
*/
|
|
flowLevel?: number;
|
|
/** Each tag may have own set of styles. - "tag" => "style" map. */
|
|
styles?: ArrayObject<StyleVariant> | null;
|
|
/** specifies a schema to use. */
|
|
schema?: SchemaDefinition;
|
|
/**
|
|
* If true, sort keys when dumping YAML in ascending, ASCII character order.
|
|
* If a function, use the function to sort the keys. (default: false)
|
|
* If a function is specified, the function must return a negative value
|
|
* if first argument is less than second argument, zero if they're equal
|
|
* and a positive value otherwise.
|
|
*/
|
|
sortKeys?: boolean | ((a: string, b: string) => number);
|
|
/** set max line width. (default: 80) */
|
|
lineWidth?: number;
|
|
/**
|
|
* if true, don't convert duplicate objects
|
|
* into references (default: false)
|
|
*/
|
|
noRefs?: boolean;
|
|
/**
|
|
* if true don't try to be compatible with older yaml versions.
|
|
* Currently: don't quote "yes", "no" and so on,
|
|
* as required for YAML 1.1 (default: false)
|
|
*/
|
|
noCompatMode?: boolean;
|
|
/**
|
|
* if true flow sequences will be condensed, omitting the
|
|
* space between `key: value` or `a, b`. Eg. `'[a,b]'` or `{a:{b:c}}`.
|
|
* Can be useful when using yaml for pretty URL query params
|
|
* as spaces are %-encoded. (default: false).
|
|
*/
|
|
condenseFlow?: boolean;
|
|
}
|
|
|
|
export class DumperState extends State {
|
|
public indent: number;
|
|
public noArrayIndent: boolean;
|
|
public skipInvalid: boolean;
|
|
public flowLevel: number;
|
|
public sortKeys: boolean | ((a: Any, b: Any) => number);
|
|
public lineWidth: number;
|
|
public noRefs: boolean;
|
|
public noCompatMode: boolean;
|
|
public condenseFlow: boolean;
|
|
public implicitTypes: Type[];
|
|
public explicitTypes: Type[];
|
|
public tag: string | null = null;
|
|
public result = "";
|
|
public duplicates: Any[] = [];
|
|
public usedDuplicates: Any[] = []; // changed from null to []
|
|
public styleMap: ArrayObject<StyleVariant>;
|
|
public dump: Any;
|
|
|
|
constructor({
|
|
schema,
|
|
indent = 2,
|
|
noArrayIndent = false,
|
|
skipInvalid = false,
|
|
flowLevel = -1,
|
|
styles = null,
|
|
sortKeys = false,
|
|
lineWidth = 80,
|
|
noRefs = false,
|
|
noCompatMode = false,
|
|
condenseFlow = false,
|
|
}: DumperStateOptions) {
|
|
super(schema);
|
|
this.indent = Math.max(1, indent);
|
|
this.noArrayIndent = noArrayIndent;
|
|
this.skipInvalid = skipInvalid;
|
|
this.flowLevel = flowLevel;
|
|
this.styleMap = compileStyleMap(this.schema as Schema, styles);
|
|
this.sortKeys = sortKeys;
|
|
this.lineWidth = lineWidth;
|
|
this.noRefs = noRefs;
|
|
this.noCompatMode = noCompatMode;
|
|
this.condenseFlow = condenseFlow;
|
|
|
|
this.implicitTypes = (this.schema as Schema).compiledImplicit;
|
|
this.explicitTypes = (this.schema as Schema).compiledExplicit;
|
|
}
|
|
}
|