diff options
author | Nayeem Rahman <nayeemrmn99@gmail.com> | 2020-05-09 13:34:47 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-09 08:34:47 -0400 |
commit | f184332c09c851faac50f598d29ebe4426e05464 (patch) | |
tree | 2659aba63702537fcde1bb64ddeafea1e5863f3e /std/encoding/_yaml/utils.ts | |
parent | 2b02535028f868ea8dfc471c4921a237747ccd4a (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/utils.ts')
-rw-r--r-- | std/encoding/_yaml/utils.ts | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/std/encoding/_yaml/utils.ts b/std/encoding/_yaml/utils.ts new file mode 100644 index 000000000..4630a45a2 --- /dev/null +++ b/std/encoding/_yaml/utils.ts @@ -0,0 +1,80 @@ +// 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. + +/* eslint-disable-next-line @typescript-eslint/no-explicit-any */ +export type Any = any; + +export function isNothing(subject: unknown): subject is never { + return typeof subject === "undefined" || subject === null; +} + +export function isArray(value: unknown): value is Any[] { + return Array.isArray(value); +} + +export function isBoolean(value: unknown): value is boolean { + return typeof value === "boolean" || value instanceof Boolean; +} + +export function isNull(value: unknown): value is null { + return value === null; +} + +export function isNumber(value: unknown): value is number { + return typeof value === "number" || value instanceof Number; +} + +export function isString(value: unknown): value is string { + return typeof value === "string" || value instanceof String; +} + +export function isSymbol(value: unknown): value is symbol { + return typeof value === "symbol"; +} + +export function isUndefined(value: unknown): value is undefined { + return value === undefined; +} + +export function isObject(value: unknown): value is object { + return value !== null && typeof value === "object"; +} + +export function isError(e: unknown): boolean { + return e instanceof Error; +} + +export function isFunction(value: unknown): value is () => void { + return typeof value === "function"; +} + +export function isRegExp(value: unknown): value is RegExp { + return value instanceof RegExp; +} + +export function toArray<T>(sequence: T): T | [] | [T] { + if (isArray(sequence)) return sequence; + if (isNothing(sequence)) return []; + + return [sequence]; +} + +export function repeat(str: string, count: number): string { + let result = ""; + + for (let cycle = 0; cycle < count; cycle++) { + result += str; + } + + return result; +} + +export function isNegativeZero(i: number): boolean { + return i === 0 && Number.NEGATIVE_INFINITY === 1 / i; +} + +export interface ArrayObject<T = Any> { + [P: string]: T; +} |