Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
A simple stream filter to highlight patterns
Python
branch: master

This branch is 2 commits ahead, 8 commits behind cespare:master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
scripts
test looked like it needed some Python
.gitignore looked like it needed some Python
README.md looked like it needed some Python
discoball.py
setup.py

README.md

discoball

discoball is a tool to filter streams and colorize patterns. It functions somewhat like egrep --color, except that it can highlight multiple patterns (in different colors). Patterns are arbitrary ruby regexes that are matched against the entire line.

Usage

$ discoball [options] <pattern1 pattern2 ...>

where options are:

  • --group-colors or -g: Color all matches of the same pattern with the same color
  • --one-color or -o: Highlight all matches with a single color
  • --match-any or -m: Only print lines matching an input pattern
  • --match-all or -a: Only print lines matching all input patterns
  • --help or -h: Print the help message

Examples

  • Highlight instances of "foo" and "bar" in the text of myfile.txt:

    $ cat myfile.txt | discoball foo bar
    
  • Highlight paths of processes running out of /usr/sbin/:

    $ ps -ef | discoball --one-color --match-any '/usr/sbin/.*$'
    
  • I wrote discoball for use with Steve Losh's todo-list tool, t. I put tags on my tasks annotated with + (inspired by Todo.txt):

    $ t Make an appointment with the dentist +health
    

    When I list my tasks (using t), I use discoball to highlight the tags with different colors:

    $ t | discoball '\+\S+'
    

    I can even do some fancier stuff to list particular labels. I have the following function defined in my .bashrc:

    function tl() {
      if [ -z  "$1" ]; then
        t | discoball '\+\S+'
      else
        t | discoball -a "${@/#/\+}"
      fi
    }

    I can use this as follows:

    $ tl               # ~> Show the list of tasks, with tags highlighted
    $ tl health urgent # ~> Show only tasks tagged with 'health' and 'urgent'
    

    Demo:

    Discoball + t demo

Installation

The easiest way to get discoball is by using pip (or easy_install): $ pip install discoball.

Something went wrong with that request. Please try again.