1.0.0 • Published 9 years ago

im.class v1.0.0

Weekly downloads
2
License
MIT
Repository
github
Last release
9 years ago

im.class

Node JS ES5 Classes with 'extend' inheritance

Installation:

npm install --save im.class

Usage:

Simple Event Class

var Class = require('im.class').Class
  , EventClass;

EventClass = Class.extend({
  constructor: function(event, data) {
    this.event = event;
    this.data = data;
  }
});

var Event = new EventClass('include', { key: 'value' });

// Can include mixin object
// Any functions found in object will be bound to this
Event.include({
  get: function() {
    return this.data;
  }
});

console.log(Event.get());
// Logs { key: 'value' }

Using Emitter Class

var EmitterClass = require('im.class').EmitterClass
  , Emitter = new EmitterClass()
  , mixin = { mixed: 'Key' };

// Alias for on
Emitter.$when('include', function(data) {
  console.log('$when: ', data.mixin);
});

// Alias for once
Emitter.$after('include', function(data) {
  console.log('$after: ', data.mixin);
});

Emitter.$after('default', function(data) {
  console.log('Default value for data is Emitter that emitted event: ', data === Emitter);
});

// Can include mixin object as Simple Class
Emitter.include(mixin);

// Fire events
Emitter.$fire('include', { mixin: mixin });
Emitter.$fire('include', { mixin: mixin });
Emitter.$fire('default');

// Logs:
// $when: { mixed: 'Key' }
// $after: { mixed: 'Key' }
// $when: { mixed: 'Key' }
// Default value for data is Emitter that emitted event: true 

Using Map Class

var Map = require('im.class').Map;

var Config = new Map({
  shell: {
    exec: 'async'
  },
  logger: {
    level: 'info',
    transport: 'file'
  }
});

console.log(Config.get('shell.exec'));
// Logs async
Config.set('logger.level', 'debug');
console.log(Config.get('logger.level'));
// Logs debug

Config.forget('logger.transport');
console.log(Config.has('logger.transport'));
// Logs false

Config.forget('shell');
console.log(Config.size());
// Logs 1

// Resets to empty object
Config.reset();
// Resets to provided object
Config.reset({ shell: { exec: 'sync' } });
console.log(Config.all());
// Logs { shell: { exec: 'sync' } }