He's a caster, get it?
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
test
.travis.yml
index.js
package.json
readme.md

readme.md

A small schema enforcer that attempts to cast the properties of an object to the types you want 'em to be.

Travis CI

Install

npm install weak-type-wizard
var Wizard = require('weak-type-wizard')

Example

var cast = new Wizard({
	boolean: 'sexy',
	number: 'devil',
	date: 'Tue May 05 2015 20:51:30 GMT-0500 (CDT)',
	string: ['one', 'two', 'cat']
})

cast({
	sexy: "true",
	devil: "667",
	one: 1,
	two: "200"
}) // => { sexy: true, devil: 667, one: '1', two: '200' }

The "primitive" types of boolean, number, date, and string are supported. You can supply default values, or even add your own types, like so:

var wizard = new Wizard({
	date: 'dateProperty',
	exciting: 'butts',
	number: ['someNumber', 'anotherNumber'],
	default: {
		someNumber: 666,
		anotherNumber: '1337'
	},
	cast: {
		exciting: function castToExciting(input) {
			return "!" + input + "!"
		}
	}
})

LevelUP support

Use a wizard as a LevelUP encoding - serialize the objects to JSON, and get them back out with all of the parameters cast to whatever you like. Example:

var levelmem = require('level-mem')

var wizard = new Wizard({
	date: ['dateProperty'],
	number: 'someNumber'
})

var db = levelmem('test', {
	valueEncoding: wizard.getLevelUpEncoding()
})

License

WTFPL