summaryrefslogtreecommitdiff
path: root/std
diff options
context:
space:
mode:
authorOliver Lenehan <sunsetkookaburra+git@outlook.com.au>2020-05-21 00:29:59 +1000
committerGitHub <noreply@github.com>2020-05-20 10:29:59 -0400
commit662eb8f8c981565950d35cdd1c9ca6a67eaef8f2 (patch)
tree2aaf3fcdc11c0f8968197edc342e15f8cb194fed /std
parentf5c0188b5edf9451aca42347dd4a48708fefce23 (diff)
feat(std/fmt): rgb24 and bgRgb24 can use numbers for color (#5198)
Diffstat (limited to 'std')
-rw-r--r--std/fmt/colors.ts36
-rw-r--r--std/fmt/colors_test.ts8
2 files changed, 40 insertions, 4 deletions
diff --git a/std/fmt/colors.ts b/std/fmt/colors.ts
index 832f3b164..6a06af20e 100644
--- a/std/fmt/colors.ts
+++ b/std/fmt/colors.ts
@@ -172,8 +172,22 @@ export function bgRgb8(str: string, color: number): string {
return run(str, code([48, 5, clampAndTruncate(color)], 49));
}
-/** Set text color using 24bit rgb. */
-export function rgb24(str: string, color: Rgb): string {
+/** Set text color using 24bit rgb.
+ * `color` can be a number in range `0x000000` to `0xffffff` or
+ * an `Rgb`.
+ *
+ * To produce the color magenta:
+ *
+ * rgba24("foo", 0xff00ff);
+ * rgba24("foo", {r: 255, g: 0, b: 255});
+ */
+export function rgb24(str: string, color: number | Rgb): string {
+ if (typeof color === "number") {
+ return run(
+ str,
+ code([38, 2, (color >> 16) & 0xff, (color >> 8) & 0xff, color & 0xff], 39)
+ );
+ }
return run(
str,
code(
@@ -189,8 +203,22 @@ export function rgb24(str: string, color: Rgb): string {
);
}
-/** Set background color using 24bit rgb. */
-export function bgRgb24(str: string, color: Rgb): string {
+/** Set background color using 24bit rgb.
+ * `color` can be a number in range `0x000000` to `0xffffff` or
+ * an `Rgb`.
+ *
+ * To produce the color magenta:
+ *
+ * bgRgba24("foo", 0xff00ff);
+ * bgRgba24("foo", {r: 255, g: 0, b: 255});
+ */
+export function bgRgb24(str: string, color: number | Rgb): string {
+ if (typeof color === "number") {
+ return run(
+ str,
+ code([48, 2, (color >> 16) & 0xff, (color >> 8) & 0xff, color & 0xff], 49)
+ );
+ }
return run(
str,
code(
diff --git a/std/fmt/colors_test.ts b/std/fmt/colors_test.ts
index cfa189d30..7a312202a 100644
--- a/std/fmt/colors_test.ts
+++ b/std/fmt/colors_test.ts
@@ -146,6 +146,10 @@ Deno.test("test_rgb24", function (): void {
);
});
+Deno.test("test_rgb24number", function (): void {
+ assertEquals(c.rgb24("foo bar", 0x070809), "foo bar");
+});
+
Deno.test("test_bgRgb24", function (): void {
assertEquals(
c.bgRgb24("foo bar", {
@@ -156,3 +160,7 @@ Deno.test("test_bgRgb24", function (): void {
"foo bar"
);
});
+
+Deno.test("test_bgRgb24number", function (): void {
+ assertEquals(c.bgRgb24("foo bar", 0x070809), "foo bar");
+});