0.1.5 • Published 10 years ago

classified-magic v0.1.5

Weekly downloads
65
License
-
Repository
github
Last release
10 years ago

#Classified Magic

OOP for NodeJS with magic. Inspired by Classified

Build Status

NPM

Installation

$ npm install classified-magic

Quick Start

var classified = require('classified-magic');

//root definition
var RootClass = classified(function() {
	//sample constants
	this.SOME_CONSTANT = 'foo';
	
	//sample public properties
	this.data = {};
	
	this.sampleProperty = 4.5;
	
	this.sampleDeepProperty = {
		sample1: 'Hello',
		sample2: [4, 5, 6, 7],
		sample3: {
			bool	: true,
			regex	: /^abc/,
			date	: new Date(),
			string	: String
		}
	};
	
	//sample protected properties
	this._sampleProperty = 5.5;
	
	this._sampleDeepProperty = {
		sample1: '_Hello',
		sample2: [8, 9, 0, 1]
	};
	
	//sample private properties
	this.__sampleProperty = 6.5;
	
	this.__sampleDeepProperty = {
		sample1: '__Hello',
		sample2: [12, 13, 14, 15]
	};
	
	//sample constructor
	this.___construct = function() {
		this.constructCalled = true;
	};
	
	//sample public method
	this.sampleMethod = function() {
		return this._sampleMethod();
	};
	
	//sample protected method
	this._sampleMethod = function() {
		return this.__sampleMethod();
	};
	
	//sample private method
	this.__sampleMethod = function() {
		return this.SOME_CONSTANT + this._sampleProperty;
	};
	
	this.sampleAccessMethod = function() {
		return this.sampleMethod()
		+ this._sampleMethod()
		+ this.__sampleMethod();
	};
	
	//sample magic methods
	this.___get = function(name) {
		return this.data[name];
	};
	
	this.___set = function(name, value) {
		this.data[name] = value;
	};
	
	this.___enum = function() {
		return Object.keys(this.data);
	};
	
	this.___has = function(name, value) {
		return this.data.hasOwnProperty(name);
	};
	
	this.___delete = function(name) {
		delete this.data[name];
	};
});

//sample child definition
//you can use object or function as the definition
var ChildClass = RootClass.extend(function() {
	//sample constants
	this.SOME_CONSTANT_2 = 'bar';
	
	//sample protected properties
	this._sampleProperty = 7.5;
	
	//sample public methods
	this.sampleMethod = function() {
		return this._sampleMethod();
	};
	
	//sample protected methods
	this._sampleMethod = function() {
		return this.___parent._sampleMethod();
	};
});

//instantiate child
var child = ChildClass.load();

//test it
console.log(child.sampleMethod()); //--> foo7.5

try {
	child._sampleMethod();
} catch(e) {
	console.log('Protected call did not work');
}

//test magic
child.foo = 4;

console.log(child.data.foo);

Features

  • Public, Private, Protected
  • Constants
  • Inheritance
  • Works on server or client
  • Magic methods - get, set and iterators

Methods

  • define(object|function) - Defines the class
  • extend(object|function) - Adds a parent to be combined with the definition
  • definition() - Returns the entire definition including the protected and private properties
  • parents() - Returns direct parents of this definition
  • get() - Returns the publically accessable class definition function
  • load() - Returns class defined instantiation
  • register(string) - saves a state of the definition which can be recalled in trait
  • trait(string|function|object) - will setup the provided as a parent, if string will recall from registry

What's up with the underscores?

  • _ - protected properties and methods
  • __ - private properties and methods
  • ___ - Magic placeholder
0.1.5

10 years ago

0.1.4

10 years ago

0.1.3

10 years ago

0.1.2

10 years ago

0.1.1

10 years ago

0.0.14

10 years ago

0.0.13

10 years ago

0.0.12

10 years ago

0.0.10

10 years ago

0.0.9

10 years ago

0.0.8

10 years ago

0.0.6

10 years ago

0.0.5

10 years ago

0.0.3

10 years ago

0.0.2

10 years ago

0.0.1

10 years ago