Color ouput with Swift command line tool
Swift has built in unicode support. This invalidates using of back slash. So that I use color codes with "\u{}" syntax. Here is a println code which works perfectly on terminal.
// \u{001B}[\(attribute code like bold, dim, normal);\(color code)m// Color codes// black 30// red 31// green 32// yellow 33// blue 34// magenta 35// cyan 36// white 37println("\u{001B}[0;33myellow")
Hope it helps.
Based on @cyt answer, I've written a simple enum with these colors and also overloaded +
operator so you can print using that enum.
It's all up on Github, but it's really that simple:
enum ANSIColors: String { case black = "\u{001B}[0;30m" case red = "\u{001B}[0;31m" case green = "\u{001B}[0;32m" case yellow = "\u{001B}[0;33m" case blue = "\u{001B}[0;34m" case magenta = "\u{001B}[0;35m" case cyan = "\u{001B}[0;36m" case white = "\u{001B}[0;37m" func name() -> String { switch self { case .black: return "Black" case .red: return "Red" case .green: return "Green" case .yellow: return "Yellow" case .blue: return "Blue" case .magenta: return "Magenta" case .cyan: return "Cyan" case .white: return "White" } } static func all() -> [ANSIColors] { return [.black, .red, .green, .yellow, .blue, .magenta, .cyan, .white] }}func + (let left: ANSIColors, let right: String) -> String { return left.rawValue + right}// END// Demo:for c in ANSIColors.all() { println(c + "This is printed in " + c.name())}
You can use Rainbow if you don't mind using it as a framework.
import Rainbowprint("Red text".red)print("Yellow background".onYellow)print("Light green text on white background".lightGreen.onWhite)