Skip to content

luoxiu/Chalk

Repository files navigation

Chalk





Expressive styling on terminal string.

Highlights

  • Expressive API
  • 256/TrueColor support
  • Nest styles
  • Auto downgrading to terminal supported color
  • No extensions on String
  • rgb & hsl & hsv & hex
  • Built-in 100+ beautiful colors

Usage

Chalk's API is very similar to chalk -- one of the most popular packages on npm.

print(chalk.cyan.on("cyan"))  // `ck` is an alias to `chalk`

// chainable
print(ck.red.bgBlue.italic.underline.on("red bgBlue italic underline"))

// combine terminal string and string
print(ck.red.on("ERROR") + " something went wrong. " + ck.green.on("but no worry! I will..."))

// rgb & hsl & hsv & hex support
print(ck.fg(.rgb(0, 92, 197)).bg(.hex(0xFA4B8B)).on("meow"))

// custom foreground color and background color with 100+ handpicked colors
print(ck.fg(.darkMagenta).bg(.lightGoldenRodYellow).bold.on("hi"))

// nest
print(ck.magenta.underline.on("begin" + ck.red.bold.on("important") + "end"))
print(ck.magenta.underline.on("begin", ck.red.bold.on("important"), "end"))

Styles

Modifiers

reset
bold
faint              // aka dim, not widely supported.
italic
underline
blink
reverse
conceal            // aka hidden, not widely supported.
crossedOut         // aka strikethrough, not widely supported.

Colors

The powerful color system is built on Rainbow.

Ansi16

// with `bg` prefix will set background color

black
red
green
yellow
blue
magenta
cyan
white

blackBright
redBright
greenBright
yellowBright
blueBright
magentaBright
cyanBright
whiteBright

256/TrueColoe

ck.fg(.rgb(0, 100, 200))
ck.fg(.hsl(300, 50, 50))
ck.fg(.hsv(300, 50, 50))
ck.bg(.hex(0x123456))
ck.bg(.hex("#123456")
ck.bg(.hex("#abc")

Built-in 100+ beautiful colors

let color = Color.Material.red50
let color = Color.Material.purple500
let color = Color.CSS.navy
let color = Color.CSS.tomato

ck.fg(color)
ck.bg(color)
//...

Install

dependencies: [
    .package(url: "https://github.com/luoxiu/Chalk", from: "0.2.0")
]
pod 'Chalk', '~> 0.2.0'

Acknowledge

Inspired by the awesome javascript library chalk.

Related

  • Rainbow - 🌈 Color conversion and manipulation library for Swift with no dependence on UIKit/AppKit.

Contribute

If you find a bug, open an issue, if you want to add new features, feel free to submit a pull request. Any contributing is welcome at all times!