im.class

1.0.0 • Public • Published

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' } }

Package Sidebar

Install

npm i im.class

Weekly Downloads

1

Version

1.0.0

License

MIT

Last publish

Collaborators

  • imkrimerman