Swiftpack.co - Package - flintbox/ANSIEscapeCode

ANSIEscapeCode
GitHub release Swift Package Manager license

Control terminal cursor and font or erase content. Build modern, interactive command line tool with colorful and dynamic output strings.

https://en.wikipedia.org/wiki/ANSI_escape_code

Table of Contents

Installation

Add ANSIEscapeCode to Package.swift.

dependencies: [
    .package(url: "https://github.com/flintbox/ANSIEscapeCode", from: "0.1.1")
]

Cursor

Up

\u{001B}[(n)A: Move cursor up n (default 1) cells.

ANSIEscapeCode.Cursor.up(3) // \u{001B}[3A
moveCursorUp() /// Move cursor up 1 cell.

Down

\u{001B}[(n)B: Move cursor down n (default 1) cells.

ANSIEscapeCode.Cursor.down() // \u{001B}[1B
moveCursorDown(5) /// Move cursor down 5 cells.

Forward

\u{001B}[(n)C: Move cursor forward n (default 1) cells.

ANSIEscapeCode.Cursor.forward(9) // \u{001B}[9C
moveCursorForward(4) // Move cursor forward 4 cells.

Backward

\u{001B}[(n)D: Move cursor backward n (default 1) cells.

ANSIEscapeCode.Cursor.backward() // \u{001B}[1D
moveCursorBackward(2) // Move cursor backward 2 cells.

Next Line

\u{001B}[(n)E: Move cursor to beginning of the line n (default 1) lines down.

ANSIEscapeCode.Cursor.nextLine(2) // \u{001B}[2E
moveCursorNextLine() // Move cursor to next line.

Previous Line

\u{001B}[(n)F: Move cursor to beginning of the line n (default 1) lines up.

ANSIEscapeCode.Cursor.previousLine(3) // \u{001B}[3F
moveCursorPreviousLine(5) // Move cursor to next line 5 times.

Column

\u{001B}[(n)G: Move cursor to column n.

ANSIEscapeCode.Cursor.column(2) // \u{001B}[2G
moveCursorToColumn(2) // Move cursor to second column.

Position

\u{001B}[(n);(m)1H: Move cursor to row n, column m.

ANSIEscapeCode.Cursor.position(row: 1, column: 1) // \u{001B}[1;1H
moveCursorToPosition(row: 5, column: 10) // Move cursor to position row 5 and column 10.

Save Position

\u{001B}[s: Save cursor position.

ANSIEscapeCode.Cursor.saveCursorPosition // \u{001B}[s
saveCursorPosition() // Save cursor position.

Restore Position

\u{001B}[u: Restore cursor position.

ANSIEscapeCode.Cursor.restoreCursorPosition // \u{001B}[u
restoreCursorPosition() // Restore cursor position.

Hide

\u{001B}[?25l: Hide cursor.

ANSIEscapeCode.Cursor.hideCursor // \u{001B}[?25l
hideCursor() // Hide cursor.

Show

\u{001B}[?25h: Show cursor.

ANSIEscapeCode.Cursor.showCursor // \u{001B}[?25h
showCursor() // Show cursor.

Erase

Erase in Display

\u{001B}[(n)J: Clear part of the screen. If n is 0 (or missing), clear from cursor to end of screen. If n is 1, clear from cursor to beginning of the screen. If n is 2, clear entire screen.

ANSIEscapeCode.Erase.eraseInDisplay(.entireScreen) // \u{001B}[2J
eraseInDisplay(.fromCursorToBeginningOfScreen) // Erase content from cursor to beginning of screen.

Erase in Line

\u{001B}[(n)K: Erase part of the line. If n is zero (or missing), clear from cursor to the end of the line. If n is 1, clear from cursor to beginning of the line. If n is 2, clear entire line. Cursor position does not change.

ANSIEscapeCode.Erase.eraseInLine(.fromCursorToEndOfLine) // \u{001B}[0K
eraseInLine(.entireLine) // Erase entire line.

Scroll

Scroll Up

\u{001B}[(n)S: Scroll whole page up by n (default 1) lines. New lines are added at the bottom.

ANSIEscapeCode.Scroll.up() // \u{001B}[1S
scrollUp(3) // Scroll up screen 3 lines.

Scroll Down

\u{001B}[(n)T: Scroll whole page down by n (default 1) lines. New lines are added at the top.

ANSIEscapeCode.Scroll.down(5) // \u{001B}[5T
scrollDown() // Scroll down screen 1 line.

Decoration

Reset

\u{001B}[0m: Reset all decoration attributes.

ANSIEscapeCode.Decoration.reset // \u{001B}[0m

Reset Background Color

\u{001B}[39m: Reset background decoration attributes.

ANSIEscapeCode.Decoration.resetBackgroundColor // \u{001B}[39m

Bold

\u{001B}[1m: Make output bold.

ANSIEscapeCode.Decoration.bold // \u{001B}[1m
print("bold text".boldOutput) // Print bold text.

Italic

\u{001B}[3m: Make output italic.

ANSIEscapeCode.Decoration.italic // \u{001B}[3m
print("italic text".italicOutput) // Print italic text.

Underline

\u{001B}[4m: Make output have underline.

ANSIEscapeCode.Decoration.underline // \u{001B}[4m
print("underline text".underlineOutput) // Print underline text.

Blink

\u{001B}[5m: Make output blink.

ANSIEscapeCode.Decoration.blink // \u{001B}[5m
print("blinking text".blinkOutput) // Print blinking text.

Text Color

\u{001B}[(COLOR)m Set text color on terminal. Check TextColor.swift for available colors.

ANSIEscapeCode.Decoration.textColor(.red) // \u{001B}[31m
print("red text".color(.red)) // Print red text.

Text 8 Bits Color

\u{001B}[38;5;(COLOR)m Set text 8 bits color on terminal. Check here for available colors.

ANSIEscapeCode.Decoration.text8BitsColor(200) // \u{001B}[38;5;200m
print("orange text".colorFrom8BitsColorSet(208)) // Print orange text.

Text RGB Color

\u{001B}[38;2;(RED);(GREEN);(BLUE)m Set text RGB color on terminal. Check here for more.

ANSIEscapeCode.Decoration.textRGBColor(red: 30, green: 20, blue: 10) // \u{001B}[38;2;30;20;10m
print("mint text".colorFromRGBColorSet(red: 170, green: 240, blue: 209)) // Print mint text.

Background Color

\u{001B}[(COLOR)m Set text background color on terminal. Check BackgroundColor.swift for available colors.

ANSIEscapeCode.Decoration.backgroundColor(.red) // \u{001B}[41m
print("red background".backgroundColor(.red)) // Print text with red background.

Background 8 Bits Color

\u{001B}[38;5;(COLOR)m Set text background 8 bits color on terminal. Check here for available colors.

ANSIEscapeCode.Decoration.background8BitsColor(200) // \u{001B}[48;5;200m
print("orange background".backgroundColorFrom8BitsColorSet(208)) // Print text with orange background.

Background RGB Color

\u{001B}[48;2;(RED);(GREEN);(BLUE)m Set text background RGB color on terminal. Check here for more.

ANSIEscapeCode.Decoration.backgroundRGBColor(red: 30, green: 20, blue: 10) // \u{001B}[48;2;30;20;10m
print("mint background".backgroundColorFromRGBColorSet(red: 170, green: 240, blue: 209)) // Print text with mint background.

Contribute

If you have good idea or suggestion? Please, don't hesitate to open a pull request or send me an email.

Hope you enjoy building command line tool with ANSIEscapeCode!

Github

link
Stars: 5
Help us keep the lights on

Dependencies

Used By

Total: 1

Releases

0.1.1 - May 23, 2018

0.1.0 - May 14, 2018

Hello World!