Replace hacky target stringification with structured serialization.
[enjoyable.git] / TargetConfig.m
index 469edab..1fef7a9 100644 (file)
@@ -7,14 +7,25 @@
 
 #import "TargetConfig.h"
 
+#import "ApplicationController.h"
+#import "Config.h"
+#import "ConfigsController.h"
+
 @implementation TargetConfig
 
-- (NSString *)stringify {
-    return [[NSString alloc] initWithFormat: @"cfg~%@", self.config.name];
++ (NSString *)serializationCode {
+    return @"cfg";
+}
+
+- (NSDictionary *)serialize {
+    return self.config
+        ? @{ @"type": @"cfg", @"name": self.config.name }
+        : @{};
 }
 
-+ (TargetConfig *)unstringifyImpl:(NSArray *)comps withConfigList:(NSArray *)configs {
-    NSString *name = comps[1];
++ (TargetConfig *)targetDeserialize:(NSDictionary *)serialization
+                        withConfigs:(NSArray *)configs {
+    NSString *name = serialization[@"name"];
     TargetConfig *target = [[TargetConfig alloc] init];
     for (Config *config in configs) {
         if ([config.name isEqualToString:name]) {
@@ -22,7 +33,6 @@
             return target;
         }
     }
-    NSLog(@"Warning: couldn't find matching config to restore from: %@", name);
     return nil;
 }