Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 42 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,55 @@ aster.src('src/**/*.js')
.map(plugin1(optionsForPlugin1))
.map(plugin2(optionsForPlugin2))
// ...
.subscribe(aster.runner);
.subscribe(aster.runner({
onNext: (item) => {
console.log('>> %s'.yellow, item)
}
}));
```

When you create an `Observable`, you always pass 3 functions in this order:
- `successHandler`
- `errorHandler`
- `onCompleteHandler`

The `success` or `error` handler is called for each processed event/item of the Observable stream, the `onComplete` handler when the stream is done (such as no more files to be processed).

The default event handlers are:

```js
function onFile(file) {
console.log('>> %s'.yellow, file.path)
}

function onError(error) {
console.error(error.stack.red)
}

function onCompleted() {
console.log('Done.'.green)
}
```

Where `onFile` is used for `onSuccess` and expects a `file` object with a `path`.

## API

### runner
Type: [`Rx.Observer`](https://github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/observer.md)

#### options.onSuccess

Success event handler for individual item/event processed.

#### options.onError

Error event handler for individual item/event processed.

#### options.onCompleted

Completed handler for when entire stream of events/items of Observable has been processed.

## License

[MIT License](http://en.wikipedia.org/wiki/MIT_License)
Expand Down
40 changes: 31 additions & 9 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,34 @@
var Rx = require('rx');
require('colors');

module.exports = Rx.Observer.create(function onFiles(files) {
console.log('Processing files...');

files.subscribe(Rx.Observer.create(
function onFile(file) { console.log('>> %s'.yellow, file.path) },
function onError(error) { console.error(error.stack.red) },
function onCompleted() { console.log('Done.'.green) }
));
});

var defaults = {
onNext: function(file) {
console.log('>> %s'.yellow, file.path)
},
onError: function (error) {
console.error(error.stack.red)
},
onCompleted: function () {
console.log('Done.'.green)
}
}

function defaultSubscriber(options) {
return function onFiles(files) {
console.log('Processing files...');

files.subscribe(Rx.Observer.create(
options.onNext || defaults.onNext,
options.onError || defaults.onError,
options.onCompleted || defaults.onCompleted
));
}
}

module.exports = function(options) {
var subscriber = options.subscriber || defaultSubscriber
subscriber = typeof subscriber === 'function' ? subscriber(options) : subscriber

Rx.Observer.create(subscriber);
}
6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "aster-runner",
"version": "0.1.1",
"version": "0.2.0",
"description": "Task runner for aster.",
"author": "Ingvar Stepanyan <[email protected]> (https://github.com/RReverser)",
"repository": "asterjs/aster-runner",
Expand All @@ -12,7 +12,7 @@
],
"main": "index.js",
"dependencies": {
"colors": "^0.6.2",
"rx": "^2.3.11"
"colors": "^1.1.2",
"rx": "^4.1.0"
}
}