2.0.2 • Published 8 years ago

bar-provider v2.0.2

Weekly downloads
2
License
BSD-3-Clause
Repository
github
Last release
8 years ago

bar-provider

Build Status

This module provides a way to easily define data to be piped into LemonBoy's bar. It depends on generators, so run node with the --harmony flag (or use io.js).

Quickstart

bar.js

var Bar = require('bar-provider');
var bar = new Bar();

bar
	.button('dmenu_run', 'Menu')
	.center(function *() {
		return new Date();
	})
	.interval(1000);

Now you can pipe it to bar

$ node --harmony bar.js | bar

API

This module provides a chainable api to allow easy construction of a bar layout. Whenever any data should be provided to a method, you may pass a string or a generator function returning a string. Any generator function will be run through co and its return value will be rendered.

Adding data

bar.raw(data)

Simply append raw text

bar.left(data)

Prefixes with %{l}

bar.right(data)

Prefixes with %{r}

bar.center(data)

Prefixes with %{c}

bar.color(color, data)

Prefixes with %{F<color>} and postfixes with %{F}

bar.bg(color, data)

Prefixes with %{B<color>} and postfixes with %{B}

bar.button(cmd, data)

Prefixes %{A:<cmd>:} and postfixes with %{A}

Chaining

You may chain all the provided methods. If you omit the data argument, all the chained styles apply at once. So the following will give you blue background AND white text:

bar.bg('blue').color('white', 'Some Data');

while the following will print text on blue background followed by white text:

bar.bg('blue', 'Some Data').color('white', 'Some more Data')

Rendering

bar.render()

Generator function which, when run through co outputs a single line on the console.

bar.renderCo()

bar.render() wrapped via co. This returns immediately.

bar.interval(ms)

Normal function, which calls the render function at each interval.

Custom Styling

To allow styling of data returned from generator functions (think color for battery percentage), each generator function is passed a utility object, containing all the above methods. Simply return the result of a yielded method if neccessary. These may be chained as well

function *getBattery(utils) {
	//somehow get your battery percentage
	var percent = yield getPercentage();
	var color = percent > 50 ? 'green' : 'red';

	return yield utils.color(color, percent);
}

bar.right(getBattery);
2.0.2

8 years ago

2.0.1

9 years ago

2.0.0

9 years ago

1.0.2

9 years ago

1.0.1

10 years ago

1.0.0

10 years ago