Merge pull request #35 from realm/al-type

RealmType -> Realm.Type
This commit is contained in:
Ari Lazier 2015-09-30 10:46:22 -07:00
commit 97b8742278
8 changed files with 67 additions and 63 deletions

View File

@ -797,6 +797,7 @@
0277984E1BBB2F1000C96559 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "ReactExample" */ = {
isa = XCConfigurationList;

View File

@ -21,14 +21,14 @@ var {
var TodoItemSchema = {
name: 'Todo',
properties: [
{name: 'text', type: RealmType.String},
{name: 'text', type: Realm.Types.STRING},
]
};
var TodoListSchmea = {
name: 'TodoList',
properties: [
{name: 'name', type: RealmType.String},
{name: 'items', type: RealmType.Array, objectType: 'Todo'}
{name: 'name', type: Realm.Types.STRING},
{name: 'items', type: Realm.Types.ARRAY, objectType: 'Todo'}
]
};

View File

@ -64,33 +64,33 @@ static inline Property RJSParseProperty(JSContextRef ctx, JSObjectRef propertyOb
prop.name = RJSValidatedStringProperty(ctx, propertyObject, nameString);
std::string type = RJSValidatedStringProperty(ctx, propertyObject, typeString);
if (type == "RealmTypeBool") {
if (type == "PropTypesBOOL") {
prop.type = PropertyTypeBool;
}
else if (type == "RealmTypeInt") {
else if (type == "PropTypesINT") {
prop.type = PropertyTypeInt;
}
else if (type == "RealmTypeFloat") {
else if (type == "PropTypesFLOAT") {
prop.type = PropertyTypeFloat;
}
else if (type == "RealmTypeDouble") {
else if (type == "PropTypesDOUBLE") {
prop.type = PropertyTypeDouble;
}
else if (type == "RealmTypeString") {
else if (type == "PropTypesSTRING") {
prop.type = PropertyTypeString;
}
else if (type == "RealmTypeDate") {
else if (type == "PropTypesDATE") {
prop.type = PropertyTypeDate;
}
else if (type == "RealmTypeData") {
else if (type == "PropTypesDATA") {
prop.type = PropertyTypeData;
}
else if (type == "RealmTypeObject") {
else if (type == "PropTypesOBJECT") {
prop.type = PropertyTypeObject;
prop.object_type = RJSValidatedStringProperty(ctx, propertyObject, objectTypeString);
prop.is_nullable = true;
}
else if (type == "RealmTypeArray") {
else if (type == "PropTypesARRAY") {
prop.type = PropertyTypeArray;
prop.object_type = RJSValidatedStringProperty(ctx, propertyObject, objectTypeString);
}

View File

@ -53,7 +53,7 @@ JSClassRef RJSCreateWrapperClass(const char * name, JSObjectGetPropertyCallback
return JSClassCreate(&classDefinition);
}
void RJSRegisterGlobalClass(JSContextRef ctx, JSObjectRef globalObject, JSClassRef classRef, const char * name, JSValueRef *exception);
JSObjectRef RJSRegisterGlobalClass(JSContextRef ctx, JSObjectRef globalObject, JSClassRef classRef, const char * name, JSValueRef *exception);
std::string RJSStringForJSString(JSStringRef jsString);
std::string RJSValidatedStringForValue(JSContextRef ctx, JSValueRef value, const char * name = nullptr);

View File

@ -18,11 +18,12 @@
#import "RJSUtil.hpp"
void RJSRegisterGlobalClass(JSContextRef ctx, JSObjectRef globalObject, JSClassRef classRef, const char * name, JSValueRef *exception) {
JSObjectRef RJSRegisterGlobalClass(JSContextRef ctx, JSObjectRef globalObject, JSClassRef classRef, const char * name, JSValueRef *exception) {
JSObjectRef classObject = JSObjectMake(ctx, classRef, NULL);
JSStringRef nameString = JSStringCreateWithUTF8CString(name);
JSObjectSetProperty(ctx, globalObject, nameString, classObject, kJSPropertyAttributeNone, exception);
JSStringRelease(nameString);
return classObject;
}
JSValueRef RJSMakeError(JSContextRef ctx, RJSException &exp) {
@ -53,10 +54,10 @@ std::string RJSStringForJSString(JSStringRef jsString) {
std::string RJSValidatedStringForValue(JSContextRef ctx, JSValueRef value, const char * name) {
if (!JSValueIsString(ctx, value)) {
if (name) {
throw std::invalid_argument((std::string)"'" + name + "' must be of type 'string'");
throw std::invalid_argument((std::string)"'" + name + "' must be of type 'STRING'");
}
else {
throw std::invalid_argument("JSValue must be of type 'string'");
throw std::invalid_argument("JSValue must be of type 'STRING'");
}
}

View File

@ -21,22 +21,22 @@
#import "RJSObject.hpp"
JSValueRef RJSTypeGet(JSContextRef ctx, JSObjectRef object, JSStringRef propertyName, JSValueRef* exception) {
return RJSValueForString(ctx, "RealmType" + RJSStringForJSString(propertyName));
return RJSValueForString(ctx, "PropTypes" + RJSStringForJSString(propertyName));
}
JSClassRef RJSRealmTypeClass() {
JSClassDefinition realmTypesDefinition = kJSClassDefinitionEmpty;
realmTypesDefinition.className = "RealmType";
realmTypesDefinition.className = "PropTypes";
JSStaticValue types[] = {
{ "Bool", RJSTypeGet, NULL, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "Int", RJSTypeGet, NULL, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "Float", RJSTypeGet, NULL, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "Double", RJSTypeGet, NULL, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "String", RJSTypeGet, NULL, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "Date", RJSTypeGet, NULL, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "Data", RJSTypeGet, NULL, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "Object", RJSTypeGet, NULL, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "Array", RJSTypeGet, NULL, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "BOOL", RJSTypeGet, NULL, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "INT", RJSTypeGet, NULL, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "FLOAT", RJSTypeGet, NULL, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "DOUBLE", RJSTypeGet, NULL, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "STRING", RJSTypeGet, NULL, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "DATE", RJSTypeGet, NULL, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "DATA", RJSTypeGet, NULL, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "OBJECT", RJSTypeGet, NULL, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "ARRAY", RJSTypeGet, NULL, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ NULL, NULL, NULL, 0 }
};
realmTypesDefinition.staticValues = types;
@ -49,9 +49,11 @@ JSClassRef RJSRealmTypeClass() {
JSValueRef exception = NULL;
JSObjectRef globalObject = JSContextGetGlobalObject(ctx);
RJSRegisterGlobalClass(ctx, globalObject, RJSRealmConstructorClass(), "Realm", &exception);
RJSRegisterGlobalClass(ctx, globalObject, RJSObjectClass(), "RealmObject", &exception);
RJSRegisterGlobalClass(ctx, globalObject, RJSRealmTypeClass(), "RealmType", &exception);
JSObjectRef globalRealmObject = RJSRegisterGlobalClass(ctx, globalObject, RJSRealmConstructorClass(), "Realm", &exception);
JSObjectRef typesObject = JSObjectMake(ctx, RJSRealmTypeClass(), NULL);
JSStringRef typeString = JSStringCreateWithUTF8CString("Types");
JSObjectSetProperty(ctx, globalRealmObject, typeString, typesObject, kJSPropertyAttributeNone, &exception);
JSStringRelease(typeString);
assert(!exception);
}

View File

@ -29,10 +29,10 @@ var ObjectTests = {
for (var i = 0; i < BasicTypesObjectSchema.properties.length; i++) {
var prop = BasicTypesObjectSchema.properties[i];
if (prop.type == RealmType.Float) {
if (prop.type == Realm.Types.FLOAT) {
TestCase.assertEqualWithTolerance(object[prop.name], basicTypesValues[i], 0.000001);
}
else if (prop.type == RealmType.Date) {
else if (prop.type == Realm.Types.DATE) {
TestCase.assertEqual(object[prop.name].getTime(), basicTypesValues[i].getTime());
}
else {

View File

@ -21,7 +21,7 @@
var TestObjectSchema = {
name: 'TestObject',
properties: [
{name: 'doubleCol', type: RealmType.Double},
{name: 'doubleCol', type: Realm.Types.DOUBLE},
]
};
@ -29,8 +29,8 @@ function PersonObject() {}
PersonObject.prototype.schema = {
name: 'PersonObject',
properties: [
{name: 'name', type: RealmType.String},
{name: 'age', type: RealmType.Double},
{name: 'name', type: Realm.Types.STRING},
{name: 'age', type: Realm.Types.DOUBLE},
]
};
PersonObject.prototype.description = function() {
@ -40,13 +40,13 @@ PersonObject.prototype.description = function() {
var BasicTypesObjectSchema = {
name: 'BasicTypesObject',
properties: [
{name: 'boolCol', type: RealmType.Bool},
{name: 'intCol', type: RealmType.Int},
{name: 'floatCol', type: RealmType.Float},
{name: 'doubleCol', type: RealmType.Double},
{name: 'stringCol', type: RealmType.String},
{name: 'dateCol', type: RealmType.Date},
{name: 'dataCol', type: RealmType.Data},
{name: 'boolCol', type: Realm.Types.BOOL},
{name: 'intCol', type: Realm.Types.INT},
{name: 'floatCol', type: Realm.Types.FLOAT},
{name: 'doubleCol', type: Realm.Types.DOUBLE},
{name: 'stringCol', type: Realm.Types.STRING},
{name: 'dateCol', type: Realm.Types.DATE},
{name: 'dataCol', type: Realm.Types.DATA},
]
};
@ -54,8 +54,8 @@ var LinkTypesObjectSchema = {
name: 'LinkTypesObject',
properties: [
{name: 'objectCol', type: 'TestObject'},
{name: 'objectCol1', type: RealmType.Object, objectType: 'TestObject'},
{name: 'arrayCol', type: RealmType.Array, objectType: 'TestObject'},
{name: 'objectCol1', type: Realm.Types.OBJECT, objectType: 'TestObject'},
{name: 'arrayCol', type: Realm.Types.ARRAY, objectType: 'TestObject'},
]
};
@ -63,8 +63,8 @@ var IntPrimaryObjectSchema = {
name: 'IntPrimaryObject',
primaryKey: 'primaryCol',
properties: [
{name: 'primaryCol', type: RealmType.Int},
{name: 'valueCol', type: RealmType.String},
{name: 'primaryCol', type: Realm.Types.INT},
{name: 'valueCol', type: Realm.Types.STRING},
]
};
@ -72,32 +72,32 @@ var AllTypesObjectSchema = {
name: 'AllTypesObject',
primaryKey: 'primaryCol',
properties: [
{name: 'primaryCol',type: RealmType.String},
{name: 'boolCol', type: RealmType.Bool},
{name: 'intCol', type: RealmType.Int},
{name: 'floatCol', type: RealmType.Float},
{name: 'doubleCol', type: RealmType.Double},
{name: 'stringCol', type: RealmType.String},
{name: 'dateCol', type: RealmType.Date},
{name: 'dataCol', type: RealmType.Data},
{name: 'primaryCol',type: Realm.Types.STRING},
{name: 'boolCol', type: Realm.Types.BOOL},
{name: 'intCol', type: Realm.Types.INT},
{name: 'floatCol', type: Realm.Types.FLOAT},
{name: 'doubleCol', type: Realm.Types.DOUBLE},
{name: 'stringCol', type: Realm.Types.STRING},
{name: 'dateCol', type: Realm.Types.DATE},
{name: 'dataCol', type: Realm.Types.DATA},
{name: 'objectCol', type: 'TestObject'},
{name: 'arrayCol', type: RealmType.Array, objectType: 'TestObject'},
{name: 'arrayCol', type: Realm.Types.ARRAY, objectType: 'TestObject'},
]
};
var DefaultValuesObjectSchema = {
name: 'DefaultValuesObject',
properties: [
{name: 'boolCol', type: RealmType.Bool, default: true},
{name: 'intCol', type: RealmType.Int, default: -1},
{name: 'floatCol', type: RealmType.Float, default: -1.1},
{name: 'doubleCol', type: RealmType.Double, default: -1.11},
{name: 'stringCol', type: RealmType.String, default: 'defaultString'},
{name: 'dateCol', type: RealmType.Date, default: new Date(1.111)},
{name: 'dataCol', type: RealmType.Data, default: 'defaultData'},
{name: 'boolCol', type: Realm.Types.BOOL, default: true},
{name: 'intCol', type: Realm.Types.INT, default: -1},
{name: 'floatCol', type: Realm.Types.FLOAT, default: -1.1},
{name: 'doubleCol', type: Realm.Types.DOUBLE, default: -1.11},
{name: 'stringCol', type: Realm.Types.STRING, default: 'defaultString'},
{name: 'dateCol', type: Realm.Types.DATE, default: new Date(1.111)},
{name: 'dataCol', type: Realm.Types.DATA, default: 'defaultData'},
{name: 'objectCol', type: 'TestObject', default: [1]},
{name: 'nullObjectCol', type: 'TestObject', default: null},
{name: 'arrayCol', type: RealmType.Array, objectType: 'TestObject', default: [[2]]},
{name: 'arrayCol', type: Realm.Types.ARRAY, objectType: 'TestObject', default: [[2]]},
]
};