https://github.com/nrkn/mixism
Underscore mixins via interfascist
https://github.com/nrkn/mixism
Last synced: 5 days ago
JSON representation
Underscore mixins via interfascist
- Host: GitHub
- URL: https://github.com/nrkn/mixism
- Owner: nrkn
- Created: 2013-03-30T00:14:25.000Z (about 12 years ago)
- Default Branch: master
- Last Pushed: 2013-11-01T00:06:38.000Z (over 11 years ago)
- Last Synced: 2025-01-26T02:39:51.424Z (4 months ago)
- Language: JavaScript
- Size: 121 KB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
# mixism
underscore mixins via interfascist
```
npm install mixism
```## What
You can add mixins to underscore for objects implementing specific interfaces via interfascist.
```javascript
var Mixism = require( 'mixism' );
var Interfascist = require( 'interfascist' );var geometryInterfaces = {
Point: {
x: 'Number',
y: 'Number'
},
Line: {
start: 'Point',
end: 'Point'
}
};var validator = new Interfascist( geometryInterfaces );
var mixism = new Mixism( validator );
var _ = mixism.underscore;var mixins = {
Point: {
square: function( point ) {
return {
x: point.x * point.x,
y: point.y * point.y
};
},
toString: function( point ) {
return 'Point(' + point.x + ',' + point.y + ')';
},
debug: function( point, message ) {
console.log( message + ': ' + _( point ).toString() );
},
},
Line: {
square: function( line ) {
return {
start: _( line.start ).square(),
end: _( line.end ).square()
}
},
toString: function( line ) {
return 'Line(' + _( line.start ).toString() + ',' + _( line.end ).toString() + ')';
},
debug: function( line, message ) {
console.log( message + ': ' + _( line ).toString() );
}
}
};mixism.mixin( mixins );
var p = {
x: 5,
y: 3.5
};var l = {
start: p,
end: {
x: 2.3,
y: -1
}
};_( p ).debug( 'point' );
_( l ).debug( 'line' );
_( p ).chain().square().debug( 'point squared' );
_( l ).chain().square().debug( 'line squared' );
/*
point: Point(5,3.5)
line: Line(Point(5,3.5),Point(2.3,-1))
point squared: Point(25,12.25)
line squared: Line(Point(25,12.25),Point(5.289999999999999,1))
*/
```## Why
Lets you apply your mixins only to the appropriate objects.
## Tests
Run with mocha from the root of mixism
```
npm install -g mocha
mocha
```## License
MIT