Handle<Value> ObjectID::New(const Arguments &args) { HandleScope scope; if (args.Length() < 1 || !args[0]->IsString() || (args[0]->IsString() && args[0]->ToString()->Length() != 24)) { return ThrowException(Exception::Error( String::New("Argument must be 24 character hex string"))); } String::Utf8Value hex(args[0]->ToString()); // XXX where should this be deleted? ObjectID *o = new ObjectID((const char *) *hex); o->Wrap(args.This()); return args.This(); }