0.8.2 • Published 13 years ago

hi-mixin v0.8.2

Weekly downloads
12
License
-
Repository
github
Last release
13 years ago

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-mixin

Test

npm test

Example Code

coffee  ./example/example-1.coffee

Usage

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] = val

To 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 ./coffee

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Update the specs and source files (./spec and ./coffee)
  4. Build the project (coffee --compile -o ./lib ./coffee)
  5. Commit your changes (git commit -am 'Add some feature')
  6. Push to the branch (git push origin my-new-feature)
  7. Create new Pull Request
0.8.2

13 years ago

0.8.1

13 years ago

0.8.0

13 years ago