Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/adrg/splash-py
Add a splash of color to your CLI apps
https://github.com/adrg/splash-py
colors python shell splash terminal
Last synced: 27 days ago
JSON representation
Add a splash of color to your CLI apps
- Host: GitHub
- URL: https://github.com/adrg/splash-py
- Owner: adrg
- License: mit
- Created: 2014-11-03T07:42:07.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2014-11-03T08:49:23.000Z (about 10 years ago)
- Last Synced: 2024-05-21T02:13:42.358Z (8 months ago)
- Topics: colors, python, shell, splash, terminal
- Language: Python
- Size: 125 KB
- Stars: 2
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
![logo](https://raw.githubusercontent.com/adrg/adrg.github.io/master/assets/projects/splash-py/logo.png)
======
[![License: MIT](http://img.shields.io/badge/license-MIT-red.svg?style=flat-square)](http://opensource.org/licenses/MIT)Splash is a small Python 3 package which gives you the ability to style
terminal output. It provides a set of types and functions to allow coloring
and styling of output text. It can be useful in CLI applications or logging
libraries.The core of the package is the **Property** class. A property represents either
a color (foreground or background) or a text attribute (bold, underline, etc.).
The package also defines the **Style** class which is just a collection of
properties. Styles provide the ability to store a group of properties and
reuse them when needed. From a coding standpoint, there is no difference
between using a property and a style.This package is a port of the [Splash](https://github.com/adrg/splash)
library, originally written for the Go language.## Installation
```sh
git clone https://github.com/adrg/splash-py.git# With distutils
cd splash-py
python3 setup.py install# With pip3
pip3 install splash-py
```## Usage
#### Properties
```python
#!/usr/bin/env python3
import splashreset = splash.reset
# Using text attributes
print(splash.bold, 'To boldly go ', reset, sep='', end='')
print(splash.underline, 'where no man ', reset, ' ', sep='')
print(splash.reverse, 'has gone before\n', reset, sep='')# Using foreground and background colors
print(splash.red, 'Roses are red', reset, sep='')
print(splash.bg_green, "Here's something new:", reset, sep='')
print(splash.magenta, 'Violets are violet', reset, sep='')
print(splash.bg_blue, 'Not freaking blue!\n', reset, sep='')# Combining colors with text attributes
print(splash.bold, splash.green, 'Hint: lamp', reset, sep='')
print(splash.red, splash.bg_blue, 'Hint: famous plumbler\n', reset, sep='')# Using formatting
print(splash.bg_yellow.format('Yellow there!'))
print('{0}The Wicked Witch of The West{1}'.format(splash.green, reset))
print(splash.bold.format('{0}{1}', splash.blue, "Don't feel blue!"))
```
Output:
![properties output](https://raw.githubusercontent.com/adrg/adrg.github.io/master/assets/projects/splash-py/properties.png)#### Styles
```python
#!/usr/bin/env python3
import splash# Using styles
info = splash.Style(splash.green, splash.bold)
warning = splash.Style(splash.yellow)
err = splash.Style(splash.red, splash.bold)
critical = splash.Style(splash.bold, splash.yellow, splash.bg_red)print(info, "INFO: I'm so informative", splash.reset, sep='')
print(warning, 'WARNING: You should not ignore me', splash.reset, sep='')
print(err.format("ERROR: You can't say I didn't warn you"))
print(critical.format('{0} {1}\n', 'CRITICAL:', 'This should be good'))# Parsing styles
# Format: foreground:background+attributes
attr = splash.Style.parse('+b')
print(attr.format('Bold'))attrs = splash.Style.parse('+bu')
print(attrs.format('Bold, underline'))fg = splash.Style.parse('yellow')
print(fg.format('Yellow foreground'))bg = splash.Style.parse(':red')
print(bg.format('Red background'))fgAttr = splash.Style.parse('green+b')
print(fgAttr.format('Green foreground, bold'))bgAttr = splash.Style.parse(':magenta+u')
print(bgAttr.format('Magenta background, underline'))fgBg = splash.Style.parse('cyan:red')
print(fgBg.format('Cyan foreground, red background'))fgBgAttr = splash.Style.parse('yellow:blue+b')
print(fgBgAttr.format('Yellow foreground, blue background, bold'))fgBgAttrs = splash.Style.parse('red:green+br')
print(fgBgAttrs.format('Red foreground, green background, bold, reverse'))
```
Output:
![styles output](https://raw.githubusercontent.com/adrg/adrg.github.io/master/assets/projects/splash-py/styles.png)## Property reference
![property reference](https://raw.githubusercontent.com/adrg/adrg.github.io/master/assets/projects/splash-py/colors.png)**Foreground colors**
```
black red green yellow blue magenta cyan white
```**Background colors**
```
bg_black bg_red bg_green bg_yellow bg_blue bg_magenta bg_cyan bg_white
```**Text attributes**
```
reset bold dim italic underline blink fast_blink reverse hidden crossed_out
```* Note: unfortunately not all text attributes are supported in all terminals.
## Style parsing reference
**Format**
```
foreground:background+attributes
```**Colors**
```
black red green yellow blue magenta cyan white
```**Text attributes**
```
b - bold
d - dim
i - italic
u - underline
B - blink
f - fast_blink
r - reverse
h - hidden
c - crossed_out
reset - reset
```## References
For more information see the [ANSI escape sequences](http://en.wikipedia.org/wiki/ANSI_escape_code#Colors)
and [Terminal colors and formatting](http://misc.flogisoft.com/bash/tip_colors_and_formatting)## License
Copyright (c) 2014 Adrian-George Bostan.This project is licensed under the [MIT license](http://opensource.org/licenses/MIT). See LICENSE for more details.