2.0.1 • Published 8 years ago

object-describe v2.0.1

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

##object-describe

A lightweight recursive object scheme validator.

For some reason, we just want to know if an object looks like what we want it to be.

Install

npm install object-describe

##Usage

var describe = require('object-describe');

var object = {
    hello: 'world'
};

say(object);

function say(param) {
    describe(param, {
        hello: 'string'
    });
    
    console.log(param.hello); //worry free
}

###Single Object Check a single object type.

describe(1, 'number');
describe('hello', 'string');

###Primitive Support All primitive type is well supported:

string, number, boolean, array, object, function, null, NaN, undefined

var target = {
	number: 0,
	string: "this is string",
	boolean: true,
	undefinedable: undefined,
	nullable: null,
	isnan: 0/0,
	object: {},
	array: [1,2,3],
	function: (function(){})
};

describe(target, {
	number: 'number',
	string: 'string',
	boolean: 'boolean',
	undefinedable: 'undefined',
	nullable: 'null',
	isnan: 'NaN',
	array: 'array',
	object: 'object',
	function: 'function'
});

###Nested Description You can define a nested description for deeper check.

var target = {
    level1: {
		level2: {
			level3: {}
		}
	}	
};

describe(target, {
    level1: {
		level2: {
			level3: 'object'
		}
	}
});

###Optional Field To be or not to be, its not a problem.

add a question mark behind a filed make it an optional.

var target = {
    tobe: 'exist',
    mybe: 'exist',
  //maynotbe: 'not exist'
};

describe(target, {
    tobe: 'string',
    'maybe?': 'string',
    'maynotbe?': 'string'
});

###Type Variation You can describe multiple type choices for a field.

Simply seperate each variation with vertical bar(|)

var target0 = {
    field: 1
};

var target1 = {
    field: 'hello'
};

describe(target0/*target1*/, {
    field: 'number|string'
});