StackGenVis: Alignment of Data, Algorithms, and Models for Stacking Ensemble Learning Using Performance Metrics
https://doi.org/10.1109/TVCG.2020.3030352
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
218 lines
6.4 KiB
218 lines
6.4 KiB
# assemble-handle [](https://www.npmjs.com/package/assemble-handle) [](https://npmjs.org/package/assemble-handle) [](https://npmjs.org/package/assemble-handle) [](https://travis-ci.org/assemble/assemble-handle)
|
|
|
|
> Assemble pipeline plugin for handling custom middleware stages.
|
|
|
|
## Install
|
|
|
|
Install with [npm](https://www.npmjs.com/):
|
|
|
|
```sh
|
|
$ npm install --save assemble-handle
|
|
```
|
|
|
|
## Usage
|
|
|
|
```js
|
|
var handle = require('assemble-handle');
|
|
```
|
|
|
|
### handle
|
|
|
|
Handle middleware for the given middleware "stage".
|
|
|
|
```js
|
|
app.task('default', function() {
|
|
return app.src('*.js')
|
|
.pipe(handle(app, 'handlerName')) //<= handle middleware
|
|
.pipe(app.dest('foo'))
|
|
});
|
|
```
|
|
|
|
**Example**
|
|
|
|
```js
|
|
var assemble = require('assemble');
|
|
var handle = require('assemble-handle');
|
|
var app = assemble();
|
|
|
|
/**
|
|
* create some middleware "stages"
|
|
*/
|
|
|
|
app.handler('onStream');
|
|
app.handler('preWrite');
|
|
app.handler('postWrite');
|
|
|
|
/**
|
|
* Create middleware
|
|
*/
|
|
|
|
app.onStream(/\.(js|css)$/, function(file, next) {
|
|
// lint javascript
|
|
next();
|
|
});
|
|
|
|
app.preWrite(/\.(jpg|png)$/, function(file, next) {
|
|
// minify images
|
|
next();
|
|
});
|
|
|
|
app.postWrite(/./, function(file, next) {
|
|
// create files tree or something
|
|
next();
|
|
});
|
|
|
|
/**
|
|
* Run (handle) the middleware
|
|
*/
|
|
|
|
app.task('site', function() {
|
|
return app.src('assets/**/*.*')
|
|
.pipe(handle(app, 'onStream')) // handle onStream
|
|
.pipe(handle(app, 'preWrite')) // handle preWrite
|
|
.pipe(app.dest('site/'));
|
|
.pipe(handle(app, 'postWrite')) // handle postWrite
|
|
});
|
|
```
|
|
|
|
### handle.once
|
|
|
|
A `.once` method is exposed, which has the same exact behavior as the main function, but will ensure that middleware is only handled once for a given "stage".
|
|
|
|
**Example**
|
|
|
|
For example the given middleware will only run once.
|
|
|
|
```js
|
|
var assemble = require('assemble-core');
|
|
var handle = require('assemble-handle');
|
|
var app = assemble();
|
|
|
|
app.handler('onFoo');
|
|
|
|
app.onFoo(/./, function(file, next) {
|
|
file.count = file.count || 0;
|
|
file.count++;
|
|
next();
|
|
});
|
|
|
|
app.task('handle-once', function(cb) {
|
|
var files = [];
|
|
app.src('test/**/*.*')
|
|
.pipe(handle.once(app, 'onFoo'))
|
|
.pipe(handle.once(app, 'onFoo'))
|
|
.pipe(handle.once(app, 'onFoo'))
|
|
.pipe(handle.once(app, 'onFoo'))
|
|
.pipe(handle.once(app, 'onFoo'))
|
|
.on('data', function(file) {
|
|
files.push(file);
|
|
})
|
|
.pipe(app.dest('test/actual'))
|
|
.on('end', function() {
|
|
console.log(files[0].count);
|
|
//=> 1
|
|
cb();
|
|
});
|
|
});
|
|
|
|
app.task('handle', function(cb) {
|
|
var files = [];
|
|
app.src('test/**/*.*')
|
|
.pipe(handle(app, 'onFoo'))
|
|
.pipe(handle(app, 'onFoo'))
|
|
.pipe(handle(app, 'onFoo'))
|
|
.pipe(handle(app, 'onFoo'))
|
|
.pipe(handle(app, 'onFoo'))
|
|
.on('data', function(file) {
|
|
files.push(file);
|
|
})
|
|
.pipe(app.dest('test/actual'))
|
|
.on('end', function() {
|
|
console.log(files[0].count);
|
|
//=> 5
|
|
cb();
|
|
});
|
|
});
|
|
```
|
|
|
|
## Custom handlers
|
|
|
|
Create custom middleware handlers.
|
|
|
|
```js
|
|
app.handler('onFoo');
|
|
```
|
|
|
|
This adds an `.onFoo` method to the instance:
|
|
|
|
```js
|
|
app.onFoo(/\.hbs$/, function(file, next) {
|
|
// do stuff to file
|
|
next();
|
|
});
|
|
```
|
|
|
|
All `.onFoo` middleware will now run when the `onFoo` handler is called:
|
|
|
|
```js
|
|
app.task('default', function() {
|
|
return app.src('*.hbs')
|
|
|
|
// call the `onFoo` handler
|
|
.pipe(handle(app, 'onFoo'))
|
|
});
|
|
```
|
|
|
|
## About
|
|
|
|
### Related projects
|
|
|
|
* [assemble-core](https://www.npmjs.com/package/assemble-core): The core assemble application with no presets or defaults. All configuration is left to the… [more](https://github.com/assemble/assemble-core) | [homepage](https://github.com/assemble/assemble-core "The core assemble application with no presets or defaults. All configuration is left to the implementor.")
|
|
* [assemble-fs](https://www.npmjs.com/package/assemble-fs): Assemble plugin to add methods to assemble for working with the file system, like src… [more](https://github.com/assemble/assemble-fs) | [homepage](https://github.com/assemble/assemble-fs "Assemble plugin to add methods to assemble for working with the file system, like src, dest, copy and symlink.")
|
|
* [assemble-streams](https://www.npmjs.com/package/assemble-streams): Assemble pipeline plugin for pushing views into a vinyl stream. | [homepage](https://github.com/assemble/assemble-streams "Assemble pipeline plugin for pushing views into a vinyl stream.")
|
|
* [assemble](https://www.npmjs.com/package/assemble): Get the rocks out of your socks! Assemble makes you fast at creating web projects… [more](https://github.com/assemble/assemble) | [homepage](https://github.com/assemble/assemble "Get the rocks out of your socks! Assemble makes you fast at creating web projects. Assemble is used by thousands of projects for rapid prototyping, creating themes, scaffolds, boilerplates, e-books, UI components, API documentation, blogs, building websit")
|
|
|
|
### Contributing
|
|
|
|
Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
|
|
|
|
### Contributors
|
|
|
|
| **Commits** | **Contributor** |
|
|
| --- | --- |
|
|
| 13 | [jonschlinkert](https://github.com/jonschlinkert) |
|
|
| 3 | [doowb](https://github.com/doowb) |
|
|
|
|
### Building docs
|
|
|
|
_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_
|
|
|
|
To generate the readme, run the following command:
|
|
|
|
```sh
|
|
$ npm install -g verbose/verb#dev verb-generate-readme && verb
|
|
```
|
|
|
|
### Running tests
|
|
|
|
Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
|
|
|
|
```sh
|
|
$ npm install && npm test
|
|
```
|
|
|
|
### Author
|
|
|
|
**Jon Schlinkert**
|
|
|
|
* [github/jonschlinkert](https://github.com/jonschlinkert)
|
|
* [twitter/jonschlinkert](https://twitter.com/jonschlinkert)
|
|
|
|
### License
|
|
|
|
Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert).
|
|
Released under the [MIT License](LICENSE).
|
|
|
|
***
|
|
|
|
_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on May 28, 2017._ |