#!/usr/bin/env seed

function is_array(obj) {
	if(obj && !(obj.propertyIsEnumerable('length')) && typeof obj === 'object' && typeof obj.length === 'number')
		return true;
	else
		return false;
}

function var_dump(obj) {
	print(obj_dump(obj));
}

function obj_dump(mixed) {
	var str;
	switch(typeof(mixed)) {
		case "boolean":
			str = "bool(" + (mixed ? "true" : "false") + ")" ;
			break;
		case "string":
			str = "string(" + mixed.length + ") \"" + mixed + "\"";
			break;
		case "number":
			str = "number(" + mixed + ")";
			break;
		case "object":
			if(is_array(mixed)) {
				str = "array(" + mixed.length + ") { ";
				for(var x = 0; x < mixed.length; x++) {
					str += "["+x+"]=> " + obj_dump(mixed[x]) + " ";
				}
				str += "}";
			} else if(mixed === null) {
				str = "NULL";
				break;
			}
			break;
		default:
			str = typeof(mixed);
			break;
	}
	return str;
}

// Examples
var str = "Howdy!";
var bool = false;
var n = null;
var a = new Array("One", "Two", 3);
var i = 1;
var u;

var_dump(str);	// string(6) "Howdy!"
var_dump(bool);	// bool(false)
var_dump(n);	// NULL
var_dump(a);	// array(3) { [0]=> string(3) "One" [1]=> string(3) "Two" [2]=> number(3) }
var_dump(i);	// number(1)
var_dump(u);	// undefined
