Implement equality checks for Targets. Don't consider equal targets as conflicting...
authorJoe Wreschnig <joe.wreschnig@gmail.com>
Sun, 3 Mar 2013 12:57:46 +0000 (13:57 +0100)
committerJoe Wreschnig <joe.wreschnig@gmail.com>
Sun, 3 Mar 2013 12:57:46 +0000 (13:57 +0100)
ConfigsController.m
Target.m

index 0c32b8b..fb50bc3 100644 (file)
                           BOOL conflict;
                           Config *mergeInto = self[cfg.name];
                           for (id key in cfg.entries) {
                           BOOL conflict;
                           Config *mergeInto = self[cfg.name];
                           for (id key in cfg.entries) {
-                              if (mergeInto.entries[key]) {
+                              if (mergeInto.entries[key]
+                                  && ![mergeInto.entries[key] isEqual:cfg.entries[key]]) {
                                   conflict = YES;
                                   break;
                               }
                                   conflict = YES;
                                   break;
                               }
index 700a151..493f94a 100644 (file)
--- a/Target.m
+++ b/Target.m
     return nil;    
 }
 
     return nil;    
 }
 
+- (BOOL)isEqual:(id)object {
+    return [object isKindOfClass:Target.class]
+        && [[self serialize] isEqual:[object serialize]];
+}
+
+- (NSUInteger)hash {
+    return [[self serialize] hash];
+}
+
 + (Target *)targetDeserialize:(NSDictionary *)serialization
                   withConfigs:(NSArray *)configs {
     // Don't crash loading old configs (but don't load them either).
 + (Target *)targetDeserialize:(NSDictionary *)serialization
                   withConfigs:(NSArray *)configs {
     // Don't crash loading old configs (but don't load them either).