hi-mixin
v0.8.2
Published
Makes it easy to define mixins that can be added to your classes
Readme
Mixin
Make it easy to define mixins that can be added to your classes
Inspired by The Little Book on CoffeeScript
Installation
npm install hi-mixinTest
npm testExample Code
coffee ./example/example-1.coffeeUsage
To define a mixin:
global.Mixin = require 'hi-mixin'
class ModelBase extends Mixin
@addTheseToClass:
pi: 3.14
@addTheseToInstance:
legs: 4
atts: {}
get: (field)-> @atts[field]
set: (field, val)-> @atts[field] = valTo define a mixin that depends on another mixin:
class ORM extends Mixin
@include ModelBase
@addTheseToClass: # this (@) will refer to the class
storage: {}
count: ()-> @findAll().length
find: (id)-> @storage[id]
findAll: ()-> val for own key, val of @storage
@addTheseToInstance: # this (@) will refer to the instance
id: null
save: ()-> global[@constructor.name].storage[@id] = @
destroy:()-> delete global[@constructor.name].storage[@id]To add a mixin to a Class:
class Animal
ORM.mixinTo @ # Adds methods and atts from ORM into this class
constructor: (@id)->
type: ()-> @get('type')
name: ()-> @get('name')
setName: (n)-> @set('name', n)Use the new class:
lion = new Animal('cat')
lion.setName('meowie')
lion.save()
console.log Animal.count()
lion.destroy()Build
coffee --compile -o ./lib ./coffeeContributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature) - Update the specs and source files (./spec and ./coffee)
- Build the project (coffee --compile -o ./lib ./coffee)
- Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin my-new-feature) - Create new Pull Request
