0
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-10-29 08:58:01 -04:00

Remove std/strings/pad.ts because String.prototype.padStart exists (#4564)

This commit is contained in:
Ryan Dahl 2020-04-01 14:28:16 -04:00 committed by GitHub
parent 1c30d755bf
commit 578138a930
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 0 additions and 149 deletions

View file

@ -2,4 +2,3 @@
export * from "./encode.ts";
export * from "./decode.ts";
export * from "./pad.ts";

View file

@ -1,75 +0,0 @@
// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
/** FillOption Object */
export interface FillOption {
/** Char to fill in */
char?: string;
/** Side to fill in */
side?: "left" | "right";
/** If strict, output string can't be greater than strLen*/
strict?: boolean;
/** char/string used to specify the string has been truncated */
strictChar?: string;
/** Side of truncate */
strictSide?: "left" | "right";
}
/**
* Pad helper for strings.
* Input string is processed to output a string with a minimal length.
* If the parameter `strict` is set to true, the output string length
* is equal to the `strLen` parameter.
* Example:
*
* pad("deno", 6, { char: "*", side: "left" }) // output : "**deno"
* pad("deno", 6, { char: "*", side: "right"}) // output : "deno**"
* pad("denosorusrex", 6 {
* char: "*",
* side: "left",
* strict: true,
* strictSide: "right",
* strictChar: "..."
* }) // output : "den..."
*
* @param input Input string
* @param strLen Output string lenght
* @param opts Configuration object
* @param [opts.char=" "] Character used to fill in
* @param [opts.side="left"] Side to fill in
* @param [opts.strict=false] Flag to truncate the string if length > strLen
* @param [opts.strictChar=""] Character to add if string is truncated
* @param [opts.strictSide="right"] Side to truncate
*/
export function pad(
input: string,
strLen: number,
opts: FillOption = {
char: " ",
strict: false,
side: "left",
strictChar: "",
strictSide: "right",
}
): string {
let out = input;
const outL = out.length;
if (outL < strLen) {
if (!opts.side || opts.side === "left") {
out = out.padStart(strLen, opts.char);
} else {
out = out.padEnd(strLen, opts.char);
}
} else if (opts.strict && outL > strLen) {
const addChar = opts.strictChar ? opts.strictChar : "";
if (opts.strictSide === "left") {
let toDrop = outL - strLen;
if (opts.strictChar) {
toDrop += opts.strictChar.length;
}
out = `${addChar}${out.slice(toDrop, outL)}`;
} else {
out = `${out.substring(0, strLen - addChar.length)}${addChar}`;
}
}
return out;
}

View file

@ -1,73 +0,0 @@
const { test } = Deno;
import { assertEquals } from "../testing/asserts.ts";
import { pad } from "./pad.ts";
test(function padTest(): void {
const expected1 = "**deno";
const expected2 = "deno";
const expected3 = "deno**";
const expected4 = "denosorusrex";
const expected5 = "denosorus";
const expected6 = "sorusrex";
const expected7 = "den...";
const expected8 = "...rex";
assertEquals(pad("deno", 6, { char: "*", side: "left" }), expected1);
assertEquals(pad("deno", 4, { char: "*", side: "left" }), expected2);
assertEquals(pad("deno", 6, { char: "*", side: "right" }), expected3);
assertEquals(
pad("denosorusrex", 4, {
char: "*",
side: "right",
strict: false,
}),
expected4
);
assertEquals(
pad("denosorusrex", 9, {
char: "*",
side: "left",
strict: true,
strictSide: "right",
}),
expected5
);
assertEquals(
pad("denosorusrex", 8, {
char: "*",
side: "left",
strict: true,
strictSide: "left",
}),
expected6
);
assertEquals(
pad("denosorusrex", 6, {
char: "*",
side: "left",
strict: true,
strictSide: "right",
strictChar: "...",
}),
expected7
);
assertEquals(
pad("denosorusrex", 6, {
char: "*",
side: "left",
strict: true,
strictSide: "left",
strictChar: "...",
}),
expected8
);
assertEquals(
pad("deno", 4, {
char: "*",
side: "left",
strict: true,
strictSide: "right",
strictChar: "...",
}),
expected2
);
});