Updated Branches:
  refs/heads/master ffdc81be5 -> 237f42e25

Fixes CB-1617 update CDVGlobalization for ARC

Also updated to use CDVPluginResult updated apis


Project: http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/commit/237f42e2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/tree/237f42e2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/diff/237f42e2

Branch: refs/heads/master
Commit: 237f42e25514258c4c2b5ae4e23cb2338f2a16e7
Parents: ffdc81b
Author: Becky Gibson <becka...@apache.org>
Authored: Thu Oct 11 10:49:45 2012 -0400
Committer: Becky Gibson <becka...@apache.org>
Committed: Thu Oct 11 10:49:45 2012 -0400

----------------------------------------------------------------------
 CordovaLib/Classes/CDVGlobalization.m           |  722 ++++++++----------
 CordovaLib/CordovaLib.xcodeproj/project.pbxproj |    2 +-
 2 files changed, 323 insertions(+), 401 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/blob/237f42e2/CordovaLib/Classes/CDVGlobalization.m
----------------------------------------------------------------------
diff --git a/CordovaLib/Classes/CDVGlobalization.m 
b/CordovaLib/Classes/CDVGlobalization.m
index 720c5bc..f811898 100644
--- a/CordovaLib/Classes/CDVGlobalization.m
+++ b/CordovaLib/Classes/CDVGlobalization.m
@@ -6,9 +6,9 @@
  to you under the Apache License, Version 2.0 (the
  "License"); you may not use this file except in compliance
  with the License.  You may obtain a copy of the License at
- 
+
  http://www.apache.org/licenses/LICENSE-2.0
- 
+
  Unless required by applicable law or agreed to in writing,
  software distributed under the License is distributed on an
  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -21,128 +21,113 @@
 
 @implementation CDVGlobalization
 
--(id)initWithWebView:(UIWebView *)theWebView
+- (id)initWithWebView:(UIWebView*)theWebView
 {
     self = (CDVGlobalization*)[super initWithWebView:theWebView];
-    if(self)
-    {
+    if (self) {
         currentLocale = CFLocaleCopyCurrent();
     }
     return self;
 }
 
-- (void) getPreferredLanguage:(NSMutableArray*)arguments 
withDict:(NSMutableDictionary*)options
+- (void)getPreferredLanguage:(NSMutableArray*)arguments 
withDict:(NSMutableDictionary*)options
 {
     NSString* callbackId = [arguments objectAtIndex:0];
-    
-    NSString* jsString = nil; // result string
+    CDVPluginResult* result = nil;
+
     NSLog(@"log1");
     // Source: 
http://stackoverflow.com/questions/3910244/getting-current-device-language-in-ios
     // (should be OK)
-    NSString * language = [[NSLocale preferredLanguages] objectAtIndex:0];
-    
-    if(language) {
-        NSDictionary * dictionary = [NSDictionary dictionaryWithObject: 
language forKey:@"value"];
-        
-        CDVPluginResult * result = [CDVPluginResult resultWithStatus: 
CDVCommandStatus_OK
-                                                 messageAsDictionary: 
dictionary];
-        
-        jsString = [result toSuccessCallbackString:callbackId];
-    }
-    else {
+    NSString* language = [[NSLocale preferredLanguages] objectAtIndex:0];
+
+    if (language) {
+        NSDictionary* dictionary = [NSDictionary dictionaryWithObject:language 
forKey:@"value"];
+
+        result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK
+                               messageAsDictionary:dictionary];
+    } else {
         // TBD is this ever expected to happen?
         NSMutableDictionary* dictionary = [NSMutableDictionary 
dictionaryWithCapacity:2];
         [dictionary setValue:[NSNumber numberWithInt:CDV_UNKNOWN_ERROR] 
forKey:@"code"];
         [dictionary setValue:@"Unknown error" forKey:@"message"];
-        CDVPluginResult* result = [CDVPluginResult 
resultWithStatus:CDVCommandStatus_ERROR messageAsDictionary:dictionary];
-        jsString = [result toErrorCallbackString:callbackId];
+        result = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR 
messageAsDictionary:dictionary];
     }
-    
-    [self writeJavascript:jsString];
+
+    [self.commandDelegate sendPluginResult:result callbackId:callbackId];
 }
 
-- (void) getLocaleName:(NSMutableArray*)arguments 
withDict:(NSMutableDictionary*)options
+- (void)getLocaleName:(NSMutableArray*)arguments 
withDict:(NSMutableDictionary*)options
 {
     CDVPluginResult* result = nil;
-    NSString* jsString = nil;
     NSString* callbackId = [arguments objectAtIndex:0];
     NSDictionary* dictionary = nil;
-    
+
     NSLocale* locale = [NSLocale currentLocale];
-    
-    if(locale) {
+
+    if (locale) {
         dictionary = [NSDictionary dictionaryWithObject:[locale 
localeIdentifier] forKey:@"value"];
-        
-        result = [CDVPluginResult resultWithStatus: CDVCommandStatus_OK 
messageAsDictionary: dictionary];
-        jsString = [result toSuccessCallbackString:callbackId];
-    }
-    else {
+
+        result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK 
messageAsDictionary:dictionary];
+    } else {
         NSMutableDictionary* dictionary = [NSMutableDictionary 
dictionaryWithCapacity:2];
         [dictionary setValue:[NSNumber numberWithInt:CDV_UNKNOWN_ERROR] 
forKey:@"code"];
         [dictionary setValue:@"Unknown error" forKey:@"message"];
-        CDVPluginResult* result = [CDVPluginResult 
resultWithStatus:CDVCommandStatus_ERROR messageAsDictionary:dictionary];
-        jsString = [result toErrorCallbackString:callbackId];
+        result = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR 
messageAsDictionary:dictionary];
     }
-    
-    [self writeJavascript:jsString];
+
+    [self.commandDelegate sendPluginResult:result callbackId:callbackId];
 }
 
-- (void) dateToString:(NSMutableArray*)arguments 
withDict:(NSMutableDictionary*)options
+- (void)dateToString:(NSMutableArray*)arguments 
withDict:(NSMutableDictionary*)options
 {
     CFDateFormatterStyle style = kCFDateFormatterShortStyle;
     CFDateFormatterStyle dateStyle = kCFDateFormatterShortStyle;
     CFDateFormatterStyle timeStyle = kCFDateFormatterShortStyle;
     NSDate* date = nil;
-    NSString *dateString = nil;
+    NSString* dateString = nil;
     CDVPluginResult* result = nil;
-    NSString* jsString = nil;
     NSString* callBackId = [arguments objectAtIndex:0];
-    
+
     id milliseconds = [options valueForKey:@"date"];
-    if (milliseconds && [milliseconds isKindOfClass:[NSNumber class]]){
+
+    if (milliseconds && [milliseconds isKindOfClass:[NSNumber class]]) {
         // get the number of seconds since 1970 and create the date object
-        date = [NSDate dateWithTimeIntervalSince1970:[milliseconds 
doubleValue]/1000];
+        date = [NSDate dateWithTimeIntervalSince1970:[milliseconds 
doubleValue] / 1000];
     }
-    
+
     // see if any options have been specified
     id items = [options valueForKey:@"options"];
-    if(items && [items isKindOfClass:[NSMutableDictionary class]]) {
-        
+    if (items && [items isKindOfClass:[NSMutableDictionary class]]) {
         NSEnumerator* enumerator = [items keyEnumerator];
         id key;
-        
+
         // iterate through all the options
-        while((key = [enumerator nextObject])) {
+        while ((key = [enumerator nextObject])) {
             id item = [items valueForKey:key];
-            
+
             // make sure that only string values are present
             if ([item isKindOfClass:[NSString class]]) {
                 // get the desired format length
-                if([key isEqualToString:@"formatLength"]) {
-                    if([item isEqualToString:@"short"]) {
+                if ([key isEqualToString:@"formatLength"]) {
+                    if ([item isEqualToString:@"short"]) {
                         style = kCFDateFormatterShortStyle;
-                    }
-                    else if ([item isEqualToString:@"medium"]) {
+                    } else if ([item isEqualToString:@"medium"]) {
                         style = kCFDateFormatterMediumStyle;
-                    }
-                    else if ([item isEqualToString:@"long"]) {
+                    } else if ([item isEqualToString:@"long"]) {
                         style = kCFDateFormatterLongStyle;
-                    }
-                    else if ([item isEqualToString:@"full"]) {
+                    } else if ([item isEqualToString:@"full"]) {
                         style = kCFDateFormatterFullStyle;
                     }
                 }
                 // get the type of date and time to generate
                 else if ([key isEqualToString:@"selector"]) {
-                    if([item isEqualToString:@"date"]) {
+                    if ([item isEqualToString:@"date"]) {
                         dateStyle = style;
                         timeStyle = kCFDateFormatterNoStyle;
-                    }
-                    else if ([item isEqualToString:@"time"]) {
+                    } else if ([item isEqualToString:@"time"]) {
                         dateStyle = kCFDateFormatterNoStyle;
                         timeStyle = style;
-                    }
-                    else if ([item isEqualToString:@"date and time"]) {
+                    } else if ([item isEqualToString:@"date and time"]) {
                         dateStyle = style;
                         timeStyle = style;
                     }
@@ -150,25 +135,23 @@
             }
         }
     }
-    
+
     // create the formatter using the user's current default locale and 
formats for dates and times
     CFDateFormatterRef formatter = CFDateFormatterCreate(kCFAllocatorDefault,
-                                                         currentLocale,
-                                                         dateStyle,
-                                                         timeStyle);
+        currentLocale,
+        dateStyle,
+        timeStyle);
     // if we have a valid date object then call the formatter
-    if(date) {
-        dateString = (NSString *) 
CFDateFormatterCreateStringWithDate(kCFAllocatorDefault,
-                                                                      
formatter,
-                                                                      
(CFDateRef) date);
+    if (date) {
+        dateString = 
(NSString*)CFBridgingRelease(CFDateFormatterCreateStringWithDate(kCFAllocatorDefault,
+                formatter,
+                (__bridge CFDateRef)date));
     }
-    
+
     // if the date was converted to a string successfully then return the 
result
-    if(dateString) {
+    if (dateString) {
         NSDictionary* dictionary = [NSDictionary 
dictionaryWithObject:dateString forKey:@"value"];
-        result = [CDVPluginResult resultWithStatus: CDVCommandStatus_OK 
messageAsDictionary: dictionary];
-        jsString = [result toSuccessCallbackString:callBackId];
-        [dateString release];
+        result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK 
messageAsDictionary:dictionary];
     }
     // error
     else {
@@ -177,125 +160,115 @@
         [dictionary setValue:[NSNumber numberWithInt:CDV_FORMATTING_ERROR] 
forKey:@"code"];
         [dictionary setValue:@"Formatting error" forKey:@"message"];
         result = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR 
messageAsDictionary:dictionary];
-        jsString = [result toErrorCallbackString:callBackId];
     }
-    
-    [self writeJavascript:jsString];
-    
+
+    [self.commandDelegate sendPluginResult:result callbackId:callBackId];
+
     CFRelease(formatter);
 }
 
-- (void) stringToDate:(NSMutableArray*)arguments 
withDict:(NSMutableDictionary*)options
+- (void)stringToDate:(NSMutableArray*)arguments 
withDict:(NSMutableDictionary*)options
 {
     CFDateFormatterStyle style = kCFDateFormatterShortStyle;
     CFDateFormatterStyle dateStyle = kCFDateFormatterShortStyle;
     CFDateFormatterStyle timeStyle = kCFDateFormatterShortStyle;
     CDVPluginResult* result = nil;
-    NSString* jsString = nil;
     NSString* callBackId = [arguments objectAtIndex:0];
     NSString* dateString = nil;
     NSDateComponents* comps = nil;
-    
-    
+
     // get the string that is to be parsed for a date
     id ms = [options valueForKey:@"dateString"];
-    if (ms && [ms isKindOfClass:[NSString class]]){
+
+    if (ms && [ms isKindOfClass:[NSString class]]) {
         dateString = ms;
     }
-    
+
     // see if any options have been specified
     id items = [options valueForKey:@"options"];
-    if(items && [items isKindOfClass:[NSMutableDictionary class]]) {
-        
+    if (items && [items isKindOfClass:[NSMutableDictionary class]]) {
         NSEnumerator* enumerator = [items keyEnumerator];
         id key;
-        
+
         // iterate through all the options
-        while((key = [enumerator nextObject])) {
+        while ((key = [enumerator nextObject])) {
             id item = [items valueForKey:key];
-            
+
             // make sure that only string values are present
             if ([item isKindOfClass:[NSString class]]) {
                 // get the desired format length
-                if([key isEqualToString:@"formatLength"]) {
-                    if([item isEqualToString:@"short"]) {
+                if ([key isEqualToString:@"formatLength"]) {
+                    if ([item isEqualToString:@"short"]) {
                         style = kCFDateFormatterShortStyle;
-                    }
-                    else if ([item isEqualToString:@"medium"]) {
+                    } else if ([item isEqualToString:@"medium"]) {
                         style = kCFDateFormatterMediumStyle;
-                    }
-                    else if ([item isEqualToString:@"long"]) {
+                    } else if ([item isEqualToString:@"long"]) {
                         style = kCFDateFormatterLongStyle;
-                    }
-                    else if ([item isEqualToString:@"full"]) {
+                    } else if ([item isEqualToString:@"full"]) {
                         style = kCFDateFormatterFullStyle;
                     }
                 }
                 // get the type of date and time to generate
                 else if ([key isEqualToString:@"selector"]) {
-                    if([item isEqualToString:@"date"]) {
+                    if ([item isEqualToString:@"date"]) {
                         dateStyle = style;
                         timeStyle = kCFDateFormatterNoStyle;
-                    }
-                    else if ([item isEqualToString:@"time"]) {
+                    } else if ([item isEqualToString:@"time"]) {
                         dateStyle = kCFDateFormatterNoStyle;
                         timeStyle = style;
-                    }
-                    else if ([item isEqualToString:@"date and time"]) {
+                    } else if ([item isEqualToString:@"date and time"]) {
                         dateStyle = style;
                         timeStyle = style;
                     }
                 }
             }
         }
-        
     }
-    
+
     // get the user's default settings for date and time formats
     CFDateFormatterRef formatter = CFDateFormatterCreate(kCFAllocatorDefault,
-                                                         currentLocale,
-                                                         dateStyle,
-                                                         timeStyle);
-    
+        currentLocale,
+        dateStyle,
+        timeStyle);
+
     // set the parsing to be more lenient
     CFDateFormatterSetProperty(formatter, kCFDateFormatterIsLenient, 
kCFBooleanTrue);
-    
+
     // parse tha date and time string
     CFDateRef date = CFDateFormatterCreateDateFromString(kCFAllocatorDefault,
-                                                         formatter,
-                                                         
(CFStringRef)dateString,
-                                                         NULL);
-    
+        formatter,
+        (__bridge CFStringRef)dateString,
+        NULL);
+
     // if we were able to parse the date then get the date and time components
-    if(date != NULL) {
-        NSCalendar *calendar = [NSCalendar currentCalendar];
-        
+    if (date != NULL) {
+        NSCalendar* calendar = [NSCalendar currentCalendar];
+
         unsigned unitFlags = NSYearCalendarUnit |
-        NSMonthCalendarUnit |
-        NSDayCalendarUnit |
-        NSHourCalendarUnit |
-        NSMinuteCalendarUnit |
-        NSSecondCalendarUnit;
-        
-        comps = [calendar components:unitFlags fromDate:(NSDate *)date];
+            NSMonthCalendarUnit |
+            NSDayCalendarUnit |
+            NSHourCalendarUnit |
+            NSMinuteCalendarUnit |
+            NSSecondCalendarUnit;
+
+        comps = [calendar components:unitFlags fromDate:(__bridge 
NSDate*)date];
         CFRelease(date);
     }
-    
+
     // put the various elements of the date and time into a dictionary
-    if(comps != nil) {
-        NSArray* keys = [NSArray 
arrayWithObjects:@"year",@"month",@"day",@"hour",@"minute",@"second",@"millisecond",
 nil];
+    if (comps != nil) {
+        NSArray* keys = [NSArray arrayWithObjects:@"year", @"month", @"day", 
@"hour", @"minute", @"second", @"millisecond", nil];
         NSArray* values = [NSArray arrayWithObjects:[NSNumber 
numberWithInt:[comps year]],
-                           [NSNumber numberWithInt:[comps month]-1],
-                           [NSNumber numberWithInt:[comps day]],
-                           [NSNumber numberWithInt:[comps hour]],
-                           [NSNumber numberWithInt:[comps minute]],
-                           [NSNumber numberWithInt:[comps second]],
-                           [NSNumber numberWithInt:0], /* iOS does not provide 
milliseconds */
-                           nil];
-        
+            [NSNumber numberWithInt:[comps month] - 1],
+            [NSNumber numberWithInt:[comps day]],
+            [NSNumber numberWithInt:[comps hour]],
+            [NSNumber numberWithInt:[comps minute]],
+            [NSNumber numberWithInt:[comps second]],
+            [NSNumber numberWithInt:0],                /* iOS does not provide 
milliseconds */
+            nil];
+
         NSDictionary* dictionary = [NSDictionary dictionaryWithObjects:values 
forKeys:keys];
-        result = [CDVPluginResult resultWithStatus: CDVCommandStatus_OK 
messageAsDictionary: dictionary];
-        jsString = [result toSuccessCallbackString:callBackId];
+        result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK 
messageAsDictionary:dictionary];
     }
     // error
     else {
@@ -304,62 +277,55 @@
         [dictionary setValue:[NSNumber numberWithInt:CDV_PARSING_ERROR] 
forKey:@"code"];
         [dictionary setValue:@"unable to parse" forKey:@"message"];
         result = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR 
messageAsDictionary:dictionary];
-        jsString = [result toErrorCallbackString:callBackId];
     }
-    
-    [self writeJavascript:jsString];
-    
+
+    [self.commandDelegate sendPluginResult:result callbackId:callBackId];
+
     CFRelease(formatter);
 }
 
-- (void) getDatePattern:(NSMutableArray*)arguments 
withDict:(NSMutableDictionary*)options
+- (void)getDatePattern:(NSMutableArray*)arguments 
withDict:(NSMutableDictionary*)options
 {
     CFDateFormatterStyle style = kCFDateFormatterShortStyle;
     CFDateFormatterStyle dateStyle = kCFDateFormatterShortStyle;
     CFDateFormatterStyle timeStyle = kCFDateFormatterShortStyle;
     CDVPluginResult* result = nil;
-    NSString* jsString = nil;
     NSString* callBackId = [arguments objectAtIndex:0];
-    
+
     // see if any options have been specified
     id items = [options valueForKey:@"options"];
-    if(items && [items isKindOfClass:[NSMutableDictionary class]]) {
-        
+
+    if (items && [items isKindOfClass:[NSMutableDictionary class]]) {
         NSEnumerator* enumerator = [items keyEnumerator];
         id key;
-        
+
         // iterate through all the options
-        while((key = [enumerator nextObject])) {
+        while ((key = [enumerator nextObject])) {
             id item = [items valueForKey:key];
-            
+
             // make sure that only string values are present
             if ([item isKindOfClass:[NSString class]]) {
                 // get the desired format length
-                if([key isEqualToString:@"formatLength"]) {
-                    if([item isEqualToString:@"short"]) {
+                if ([key isEqualToString:@"formatLength"]) {
+                    if ([item isEqualToString:@"short"]) {
                         style = kCFDateFormatterShortStyle;
-                    }
-                    else if ([item isEqualToString:@"medium"]) {
+                    } else if ([item isEqualToString:@"medium"]) {
                         style = kCFDateFormatterMediumStyle;
-                    }
-                    else if ([item isEqualToString:@"long"]) {
+                    } else if ([item isEqualToString:@"long"]) {
                         style = kCFDateFormatterLongStyle;
-                    }
-                    else if ([item isEqualToString:@"full"]) {
+                    } else if ([item isEqualToString:@"full"]) {
                         style = kCFDateFormatterFullStyle;
                     }
                 }
                 // get the type of date and time to generate
                 else if ([key isEqualToString:@"selector"]) {
-                    if([item isEqualToString:@"date"]) {
+                    if ([item isEqualToString:@"date"]) {
                         dateStyle = style;
                         timeStyle = kCFDateFormatterNoStyle;
-                    }
-                    else if ([item isEqualToString:@"time"]) {
+                    } else if ([item isEqualToString:@"time"]) {
                         dateStyle = kCFDateFormatterNoStyle;
                         timeStyle = style;
-                    }
-                    else if ([item isEqualToString:@"date and time"]) {
+                    } else if ([item isEqualToString:@"date and time"]) {
                         dateStyle = style;
                         timeStyle = style;
                     }
@@ -367,31 +333,29 @@
             }
         }
     }
-    
+
     // get the user's default settings for date and time formats
     CFDateFormatterRef formatter = CFDateFormatterCreate(kCFAllocatorDefault,
-                                                         currentLocale,
-                                                         dateStyle,
-                                                         timeStyle);
-    
+        currentLocale,
+        dateStyle,
+        timeStyle);
+
     // get the date pattern to apply when formatting and parsing
     CFStringRef datePattern = CFDateFormatterGetFormat(formatter);
     // get the user's current time zone information
-    CFTimeZoneRef timezone = (CFTimeZoneRef) 
CFDateFormatterCopyProperty(formatter, kCFDateFormatterTimeZone);
-    
+    CFTimeZoneRef timezone = 
(CFTimeZoneRef)CFDateFormatterCopyProperty(formatter, kCFDateFormatterTimeZone);
+
     // put the pattern and time zone information into the dictionary
-    if(datePattern != nil && timezone != nil) {
-        NSArray* keys = [NSArray 
arrayWithObjects:@"pattern",@"timezone",@"utc_offset",@"dst_offset",nil];
-        NSArray* values = [NSArray arrayWithObjects:((NSString*)datePattern),
-                           [((NSTimeZone*) timezone)abbreviation],
-                           [NSNumber numberWithLong:[((NSTimeZone*) 
timezone)secondsFromGMT]],
-                           [NSNumber numberWithDouble:[((NSTimeZone*) 
timezone)daylightSavingTimeOffset]],
-                           nil];
-        
+    if ((datePattern != nil) && (timezone != nil)) {
+        NSArray* keys = [NSArray arrayWithObjects:@"pattern", @"timezone", 
@"utc_offset", @"dst_offset", nil];
+        NSArray* values = [NSArray arrayWithObjects:((__bridge 
NSString*)datePattern),
+            [((__bridge NSTimeZone*)timezone)abbreviation],
+            [NSNumber numberWithLong:[((__bridge 
NSTimeZone*)timezone)secondsFromGMT]],
+            [NSNumber numberWithDouble:[((__bridge 
NSTimeZone*)timezone)daylightSavingTimeOffset]],
+            nil];
+
         NSDictionary* dictionary = [NSDictionary dictionaryWithObjects:values 
forKeys:keys];
-        result = [CDVPluginResult resultWithStatus: CDVCommandStatus_OK 
messageAsDictionary: dictionary];
-        jsString = [result toSuccessCallbackString:callBackId];
-        
+        result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK 
messageAsDictionary:dictionary];
     }
     // error
     else {
@@ -399,85 +363,77 @@
         [dictionary setValue:[NSNumber numberWithInt:CDV_PATTERN_ERROR] 
forKey:@"code"];
         [dictionary setValue:@"Pattern error" forKey:@"message"];
         result = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR 
messageAsDictionary:dictionary];
-        jsString = [result toErrorCallbackString:callBackId];
     }
-    
-    [self writeJavascript:jsString];
-    
+
+    [self.commandDelegate sendPluginResult:result callbackId:callBackId];
+
     if (timezone) {
         CFRelease(timezone);
     }
     CFRelease(formatter);
 }
 
-- (void) getDateNames:(NSMutableArray*)arguments 
withDict:(NSMutableDictionary*)options
+- (void)getDateNames:(NSMutableArray*)arguments 
withDict:(NSMutableDictionary*)options
 {
     int style = CDV_FORMAT_LONG;
     int selector = CDV_SELECTOR_MONTHS;
     CFStringRef dataStyle = kCFDateFormatterMonthSymbols;
     CDVPluginResult* result = nil;
-    NSString* jsString = nil;
     NSString* callBackId = [arguments objectAtIndex:0];
-    
+
     // see if any options have been specified
     id items = [options valueForKey:@"options"];
-    if(items && [items isKindOfClass:[NSMutableDictionary class]]) {
-        
+
+    if (items && [items isKindOfClass:[NSMutableDictionary class]]) {
         NSEnumerator* enumerator = [items keyEnumerator];
         id key;
-        
+
         // iterate through all the options
-        while((key = [enumerator nextObject])) {
+        while ((key = [enumerator nextObject])) {
             id item = [items valueForKey:key];
-            
+
             // make sure that only string values are present
             if ([item isKindOfClass:[NSString class]]) {
                 // get the desired type of name
-                if([key isEqualToString:@"type"]) {
-                    if([item isEqualToString:@"narrow"]) {
+                if ([key isEqualToString:@"type"]) {
+                    if ([item isEqualToString:@"narrow"]) {
                         style = CDV_FORMAT_SHORT;
-                    }
-                    else if ([item isEqualToString:@"wide"]) {
+                    } else if ([item isEqualToString:@"wide"]) {
                         style = CDV_FORMAT_LONG;
                     }
                 }
                 // determine if months or days are needed
                 else if ([key isEqualToString:@"item"]) {
-                    if([item isEqualToString:@"months"]) {
+                    if ([item isEqualToString:@"months"]) {
                         selector = CDV_SELECTOR_MONTHS;
-                    }
-                    else if ([item isEqualToString:@"days"]) {
+                    } else if ([item isEqualToString:@"days"]) {
                         selector = CDV_SELECTOR_DAYS;
                     }
                 }
             }
         }
     }
-    
+
     CFDateFormatterRef formatter = CFDateFormatterCreate(kCFAllocatorDefault,
-                                                         currentLocale,
-                                                         
kCFDateFormatterFullStyle,
-                                                         
kCFDateFormatterFullStyle);
-    
-    if(selector == CDV_SELECTOR_MONTHS && style == CDV_FORMAT_LONG) {
+        currentLocale,
+        kCFDateFormatterFullStyle,
+        kCFDateFormatterFullStyle);
+
+    if ((selector == CDV_SELECTOR_MONTHS) && (style == CDV_FORMAT_LONG)) {
         dataStyle = kCFDateFormatterMonthSymbols;
-    }
-    else if(selector == CDV_SELECTOR_MONTHS && style == CDV_FORMAT_SHORT) {
+    } else if ((selector == CDV_SELECTOR_MONTHS) && (style == 
CDV_FORMAT_SHORT)) {
         dataStyle = kCFDateFormatterShortMonthSymbols;
-    }
-    else if(selector == CDV_SELECTOR_DAYS && style == CDV_FORMAT_LONG) {
+    } else if ((selector == CDV_SELECTOR_DAYS) && (style == CDV_FORMAT_LONG)) {
         dataStyle = kCFDateFormatterWeekdaySymbols;
-    }
-    else if(selector == CDV_SELECTOR_DAYS && style == CDV_FORMAT_SHORT) {
+    } else if ((selector == CDV_SELECTOR_DAYS) && (style == CDV_FORMAT_SHORT)) 
{
         dataStyle = kCFDateFormatterShortWeekdaySymbols;
     }
-    
-    CFArrayRef names = (CFArrayRef) CFDateFormatterCopyProperty(formatter, 
dataStyle);
-    
-    if(names) {
-        NSDictionary* dictionary = [NSDictionary 
dictionaryWithObject:((NSArray*)names) forKey:@"value"];
-        result = [CDVPluginResult resultWithStatus: CDVCommandStatus_OK 
messageAsDictionary: dictionary];
-        jsString = [result toSuccessCallbackString:callBackId];
+
+    CFArrayRef names = (CFArrayRef)CFDateFormatterCopyProperty(formatter, 
dataStyle);
+
+    if (names) {
+        NSDictionary* dictionary = [NSDictionary 
dictionaryWithObject:((__bridge NSArray*)names) forKey:@"value"];
+        result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK 
messageAsDictionary:dictionary];
         CFRelease(names);
     }
     // error
@@ -486,37 +442,34 @@
         [dictionary setValue:[NSNumber numberWithInt:CDV_UNKNOWN_ERROR] 
forKey:@"code"];
         [dictionary setValue:@"Unknown error" forKey:@"message"];
         result = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR 
messageAsDictionary:dictionary];
-        jsString = [result toErrorCallbackString:callBackId];
     }
-    
-    [self writeJavascript:jsString];
-    
+
+    [self.commandDelegate sendPluginResult:result callbackId:callBackId];
+
     CFRelease(formatter);
-    
 }
 
-- (void) isDayLightSavingsTime:(NSMutableArray*)arguments 
withDict:(NSMutableDictionary*)options
+- (void)isDayLightSavingsTime:(NSMutableArray*)arguments 
withDict:(NSMutableDictionary*)options
 {
     NSDate* date = nil;
     CDVPluginResult* result = nil;
-    NSString* jsString = nil;
     NSString* callBackId = [arguments objectAtIndex:0];
-    
+
     id milliseconds = [options valueForKey:@"date"];
-    if (milliseconds && [milliseconds isKindOfClass:[NSNumber class]]){
+
+    if (milliseconds && [milliseconds isKindOfClass:[NSNumber class]]) {
         // get the number of seconds since 1970 and create the date object
-        date = [NSDate dateWithTimeIntervalSince1970:[milliseconds 
doubleValue]/1000];
+        date = [NSDate dateWithTimeIntervalSince1970:[milliseconds 
doubleValue] / 1000];
     }
-    
-    if(date) {
+
+    if (date) {
         // get the current calendar for the user and check if the date is 
using DST
-        NSCalendar *calendar = [NSCalendar currentCalendar];
+        NSCalendar* calendar = [NSCalendar currentCalendar];
         NSTimeZone* timezone = [calendar timeZone];
         NSNumber* dst = [NSNumber numberWithBool:[timezone 
isDaylightSavingTimeForDate:date]];
-        
+
         NSDictionary* dictionary = [NSDictionary dictionaryWithObject:dst 
forKey:@"dst"];
-        result = [CDVPluginResult resultWithStatus: CDVCommandStatus_OK 
messageAsDictionary: dictionary];
-        jsString = [result toSuccessCallbackString:callBackId];
+        result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK 
messageAsDictionary:dictionary];
     }
     // error
     else {
@@ -524,26 +477,22 @@
         [dictionary setValue:[NSNumber numberWithInt:CDV_UNKNOWN_ERROR] 
forKey:@"code"];
         [dictionary setValue:@"Unknown error" forKey:@"message"];
         result = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR 
messageAsDictionary:dictionary];
-        jsString = [result toErrorCallbackString:callBackId];
     }
-    [self writeJavascript:jsString];
+    [self.commandDelegate sendPluginResult:result callbackId:callBackId];
 }
 
-- (void) getFirstDayOfWeek:(NSMutableArray*)arguments 
withDict:(NSMutableDictionary*)options
+- (void)getFirstDayOfWeek:(NSMutableArray*)arguments 
withDict:(NSMutableDictionary*)options
 {
     CDVPluginResult* result = nil;
-    NSString* jsString = nil;
     NSString* callBackId = [arguments objectAtIndex:0];
-    
-    NSCalendar *calendar = [NSCalendar autoupdatingCurrentCalendar];
-    
+
+    NSCalendar* calendar = [NSCalendar autoupdatingCurrentCalendar];
+
     NSNumber* day = [NSNumber numberWithInt:[calendar firstWeekday]];
-    
-    
-    if(day) {
+
+    if (day) {
         NSDictionary* dictionary = [NSDictionary dictionaryWithObject:day 
forKey:@"value"];
-        result = [CDVPluginResult resultWithStatus: CDVCommandStatus_OK 
messageAsDictionary: dictionary];
-        jsString = [result toSuccessCallbackString:callBackId];
+        result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK 
messageAsDictionary:dictionary];
     }
     // error
     else {
@@ -551,66 +500,62 @@
         [dictionary setValue:[NSNumber numberWithInt:CDV_UNKNOWN_ERROR] 
forKey:@"code"];
         [dictionary setValue:@"Unknown error" forKey:@"message"];
         result = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR 
messageAsDictionary:dictionary];
-        jsString = [result toErrorCallbackString:callBackId];
     }
-    
-    [self writeJavascript:jsString];
+
+    [self.commandDelegate sendPluginResult:result callbackId:callBackId];
 }
 
-- (void) numberToString:(NSMutableArray*)arguments 
withDict:(NSMutableDictionary*)options
+- (void)numberToString:(NSMutableArray*)arguments 
withDict:(NSMutableDictionary*)options
 {
     CDVPluginResult* result = nil;
-    NSString* jsString = nil;
     NSString* callBackId = [arguments objectAtIndex:0];
     CFNumberFormatterStyle style = kCFNumberFormatterDecimalStyle;
     NSNumber* number = nil;
-    
+
     id value = [options valueForKey:@"number"];
-    if (value && [value isKindOfClass:[NSNumber class]]){
+
+    if (value && [value isKindOfClass:[NSNumber class]]) {
         number = (NSNumber*)value;
     }
-    
+
     // see if any options have been specified
     id items = [options valueForKey:@"options"];
-    if(items && [items isKindOfClass:[NSMutableDictionary class]]) {
+    if (items && [items isKindOfClass:[NSMutableDictionary class]]) {
         NSEnumerator* enumerator = [items keyEnumerator];
         id key;
-        
+
         // iterate through all the options
-        while((key = [enumerator nextObject])) {
+        while ((key = [enumerator nextObject])) {
             id item = [items valueForKey:key];
-            
+
             // make sure that only string values are present
             if ([item isKindOfClass:[NSString class]]) {
                 // get the desired style of formatting
-                if([key isEqualToString:@"type"]) {
-                    if([item isEqualToString:@"percent"]) {
+                if ([key isEqualToString:@"type"]) {
+                    if ([item isEqualToString:@"percent"]) {
                         style = kCFNumberFormatterPercentStyle;
-                    }
-                    else if ([item isEqualToString:@"currency"]) {
+                    } else if ([item isEqualToString:@"currency"]) {
                         style = kCFNumberFormatterCurrencyStyle;
-                    }
-                    else if ([item isEqualToString:@"decimal"]) {
+                    } else if ([item isEqualToString:@"decimal"]) {
                         style = kCFNumberFormatterDecimalStyle;
                     }
                 }
             }
         }
     }
-    
+
     CFNumberFormatterRef formatter = 
CFNumberFormatterCreate(kCFAllocatorDefault,
-                                                             currentLocale,
-                                                             style);
-    
+        currentLocale,
+        style);
+
     // get the localized string based upon the locale and user preferences
-    NSString *numberString = (NSString *) 
CFNumberFormatterCreateStringWithNumber(kCFAllocatorDefault,
-                                                                               
   formatter,
-                                                                               
   (CFNumberRef)number);
-    
-    if(numberString) {
+    NSString* numberString = (__bridge_transfer 
NSString*)CFNumberFormatterCreateStringWithNumber(kCFAllocatorDefault,
+        formatter,
+        (__bridge CFNumberRef)number);
+
+    if (numberString) {
         NSDictionary* dictionary = [NSDictionary 
dictionaryWithObject:numberString forKey:@"value"];
-        result = [CDVPluginResult resultWithStatus: CDVCommandStatus_OK 
messageAsDictionary: dictionary];
-        jsString = [result toSuccessCallbackString:callBackId];
+        result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK 
messageAsDictionary:dictionary];
     }
     // error
     else {
@@ -619,77 +564,72 @@
         [dictionary setValue:[NSNumber numberWithInt:CDV_FORMATTING_ERROR] 
forKey:@"code"];
         [dictionary setValue:@"Unable to format" forKey:@"message"];
         result = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR 
messageAsDictionary:dictionary];
-        jsString = [result toErrorCallbackString:callBackId];
     }
-    
-    [self writeJavascript:jsString];
-    
-    [numberString release];
+
+    [self.commandDelegate sendPluginResult:result callbackId:callBackId];
+
     CFRelease(formatter);
 }
 
-- (void) stringToNumber:(NSMutableArray*)arguments 
withDict:(NSMutableDictionary*)options
+- (void)stringToNumber:(NSMutableArray*)arguments 
withDict:(NSMutableDictionary*)options
 {
     CDVPluginResult* result = nil;
-    NSString* jsString = nil;
     NSString* callBackId = [arguments objectAtIndex:0];
     CFNumberFormatterStyle style = kCFNumberFormatterDecimalStyle;
     NSString* numberString = nil;
     double doubleValue;
-    
+
     id value = [options valueForKey:@"numberString"];
-    if (value && [value isKindOfClass:[NSString class]]){
+
+    if (value && [value isKindOfClass:[NSString class]]) {
         numberString = (NSString*)value;
     }
-    
+
     // see if any options have been specified
     id items = [options valueForKey:@"options"];
-    if(items && [items isKindOfClass:[NSMutableDictionary class]]) {
+    if (items && [items isKindOfClass:[NSMutableDictionary class]]) {
         NSEnumerator* enumerator = [items keyEnumerator];
         id key;
-        
+
         // iterate through all the options
-        while((key = [enumerator nextObject])) {
+        while ((key = [enumerator nextObject])) {
             id item = [items valueForKey:key];
-            
+
             // make sure that only string values are present
             if ([item isKindOfClass:[NSString class]]) {
                 // get the desired style of formatting
-                if([key isEqualToString:@"type"]) {
-                    if([item isEqualToString:@"percent"]) {
+                if ([key isEqualToString:@"type"]) {
+                    if ([item isEqualToString:@"percent"]) {
                         style = kCFNumberFormatterPercentStyle;
-                    }
-                    else if ([item isEqualToString:@"currency"]) {
+                    } else if ([item isEqualToString:@"currency"]) {
                         style = kCFNumberFormatterCurrencyStyle;
-                    }
-                    else if ([item isEqualToString:@"decimal"]) {
+                    } else if ([item isEqualToString:@"decimal"]) {
                         style = kCFNumberFormatterDecimalStyle;
                     }
                 }
             }
         }
     }
-    
+
     CFNumberFormatterRef formatter = 
CFNumberFormatterCreate(kCFAllocatorDefault,
-                                                             currentLocale,
-                                                             style);
-    
+        currentLocale,
+        style);
+
     // we need to make this lenient so as to avoid problems with parsing 
currencies that have non-breaking space characters
-    if(style == kCFNumberFormatterCurrencyStyle) {
+    if (style == kCFNumberFormatterCurrencyStyle) {
         CFNumberFormatterSetProperty(formatter, kCFNumberFormatterIsLenient, 
kCFBooleanTrue);
     }
-    
+
     // parse againist the largest type to avoid data loss
     Boolean rc = CFNumberFormatterGetValueFromString(formatter,
-                                                     (CFStringRef)numberString,
-                                                     NULL,
-                                                     kCFNumberDoubleType,
-                                                     &doubleValue);
-    
-    if(rc) {
+        (__bridge CFStringRef)numberString,
+        NULL,
+        kCFNumberDoubleType,
+        &doubleValue);
+
+    if (rc) {
         NSDictionary* dictionary = [NSDictionary 
dictionaryWithObject:[NSNumber numberWithDouble:doubleValue] forKey:@"value"];
-        result = [CDVPluginResult resultWithStatus: CDVCommandStatus_OK 
messageAsDictionary: dictionary];
-        jsString = [result toSuccessCallbackString:callBackId];
+        result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK 
messageAsDictionary:dictionary];
     }
     // error
     else {
@@ -698,84 +638,79 @@
         [dictionary setValue:[NSNumber numberWithInt:CDV_PARSING_ERROR] 
forKey:@"code"];
         [dictionary setValue:@"Unable to parse" forKey:@"message"];
         result = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR 
messageAsDictionary:dictionary];
-        jsString = [result toErrorCallbackString:callBackId];
     }
-    
-    [self writeJavascript:jsString];
-    
+
+    [self.commandDelegate sendPluginResult:result callbackId:callBackId];
+
     CFRelease(formatter);
 }
 
-- (void) getNumberPattern:(NSMutableArray*)arguments 
withDict:(NSMutableDictionary*)options
+- (void)getNumberPattern:(NSMutableArray*)arguments 
withDict:(NSMutableDictionary*)options
 {
     CDVPluginResult* result = nil;
-    NSString* jsString = nil;
     NSString* callBackId = [arguments objectAtIndex:0];
     CFNumberFormatterStyle style = kCFNumberFormatterDecimalStyle;
     CFStringRef symbolType = NULL;
     NSString* symbol = @"";
-    
+
     // see if any options have been specified
     id items = [options valueForKey:@"options"];
-    if(items && [items isKindOfClass:[NSMutableDictionary class]]) {
+
+    if (items && [items isKindOfClass:[NSMutableDictionary class]]) {
         NSEnumerator* enumerator = [items keyEnumerator];
         id key;
-        
+
         // iterate through all the options
-        while((key = [enumerator nextObject])) {
+        while ((key = [enumerator nextObject])) {
             id item = [items valueForKey:key];
-            
+
             // make sure that only string values are present
             if ([item isKindOfClass:[NSString class]]) {
                 // get the desired style of formatting
-                if([key isEqualToString:@"type"]) {
-                    if([item isEqualToString:@"percent"]) {
+                if ([key isEqualToString:@"type"]) {
+                    if ([item isEqualToString:@"percent"]) {
                         style = kCFNumberFormatterPercentStyle;
-                    }
-                    else if ([item isEqualToString:@"currency"]) {
+                    } else if ([item isEqualToString:@"currency"]) {
                         style = kCFNumberFormatterCurrencyStyle;
-                    }
-                    else if ([item isEqualToString:@"decimal"]) {
+                    } else if ([item isEqualToString:@"decimal"]) {
                         style = kCFNumberFormatterDecimalStyle;
                     }
                 }
             }
         }
     }
-    
+
     CFNumberFormatterRef formatter = 
CFNumberFormatterCreate(kCFAllocatorDefault,
-                                                             currentLocale,
-                                                             style);
-    
-    NSString* numberPattern = (NSString*)CFNumberFormatterGetFormat(formatter);
-    
-    if(style == kCFNumberFormatterCurrencyStyle) {
+        currentLocale,
+        style);
+
+    NSString* numberPattern = (__bridge 
NSString*)CFNumberFormatterGetFormat(formatter);
+
+    if (style == kCFNumberFormatterCurrencyStyle) {
         symbolType = kCFNumberFormatterCurrencySymbol;
-    }
-    else if (style == kCFNumberFormatterPercentStyle) {
+    } else if (style == kCFNumberFormatterPercentStyle) {
         symbolType = kCFNumberFormatterPercentSymbol;
     }
-    
-    if(symbolType) {
-        symbol = (NSString*) CFNumberFormatterCopyProperty(formatter, 
symbolType);
-    }
-    
-    NSString* decimal = (NSString*) CFNumberFormatterCopyProperty(formatter, 
kCFNumberFormatterDecimalSeparator);
-    NSString* grouping = (NSString*) CFNumberFormatterCopyProperty(formatter, 
kCFNumberFormatterGroupingSeparator);
-    NSString* posSign = (NSString*) CFNumberFormatterCopyProperty(formatter, 
kCFNumberFormatterPlusSign);
-    NSString* negSign = (NSString*) CFNumberFormatterCopyProperty(formatter, 
kCFNumberFormatterMinusSign);
-    NSNumber* fracDigits = (NSNumber*) 
CFNumberFormatterCopyProperty(formatter, kCFNumberFormatterMinFractionDigits);
-    NSNumber* roundingDigits = (NSNumber*) 
CFNumberFormatterCopyProperty(formatter, kCFNumberFormatterRoundingIncrement);
-    
+
+    if (symbolType) {
+        symbol = (__bridge_transfer 
NSString*)CFNumberFormatterCopyProperty(formatter, symbolType);
+    }
+
+    NSString* decimal = (__bridge_transfer 
NSString*)CFNumberFormatterCopyProperty(formatter, 
kCFNumberFormatterDecimalSeparator);
+    NSString* grouping = (__bridge_transfer 
NSString*)CFNumberFormatterCopyProperty(formatter, 
kCFNumberFormatterGroupingSeparator);
+    NSString* posSign = (__bridge_transfer 
NSString*)CFNumberFormatterCopyProperty(formatter, kCFNumberFormatterPlusSign);
+    NSString* negSign = (__bridge_transfer 
NSString*)CFNumberFormatterCopyProperty(formatter, kCFNumberFormatterMinusSign);
+    NSNumber* fracDigits = (__bridge_transfer 
NSNumber*)CFNumberFormatterCopyProperty(formatter, 
kCFNumberFormatterMinFractionDigits);
+    NSNumber* roundingDigits = (__bridge_transfer 
NSNumber*)CFNumberFormatterCopyProperty(formatter, 
kCFNumberFormatterRoundingIncrement);
+
     // put the pattern information into the dictionary
-    if(numberPattern != nil) {
-        NSArray* keys = [NSArray 
arrayWithObjects:@"pattern",@"symbol",@"fraction",@"rounding",
-                         @"positive",@"negative", @"decimal",@"grouping",nil];
-        NSArray* values = [NSArray 
arrayWithObjects:numberPattern,symbol,fracDigits,roundingDigits,
-                           posSign,negSign,decimal,grouping,nil];
+    if (numberPattern != nil) {
+        NSArray* keys = [NSArray arrayWithObjects:@"pattern", @"symbol", 
@"fraction", @"rounding",
+            @"positive", @"negative", @"decimal", @"grouping", nil];
+        NSArray* values = [NSArray arrayWithObjects:numberPattern, symbol, 
fracDigits, roundingDigits,
+            posSign, negSign, decimal, grouping, nil];
         NSDictionary* dictionary = [NSDictionary dictionaryWithObjects:values 
forKeys:keys];
-        result = [CDVPluginResult resultWithStatus: CDVCommandStatus_OK 
messageAsDictionary: dictionary];
-        jsString = [result toSuccessCallbackString:callBackId];
+        result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK 
messageAsDictionary:dictionary];
     }
     // error
     else {
@@ -783,25 +718,16 @@
         [dictionary setValue:[NSNumber numberWithInt:CDV_PATTERN_ERROR] 
forKey:@"code"];
         [dictionary setValue:@"Pattern error" forKey:@"message"];
         result = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR 
messageAsDictionary:dictionary];
-        jsString = [result toErrorCallbackString:callBackId];
-    }
-    
-    [self writeJavascript:jsString];
-    
-    [decimal release];
-    [grouping release];
-    [posSign release];
-    [negSign release];
-    [fracDigits release];
-    [roundingDigits release];
-    [symbol release];
+    }
+
+    [self.commandDelegate sendPluginResult:result callbackId:callBackId];
+
     CFRelease(formatter);
 }
 
-- (void) getCurrencyPattern:(NSMutableArray*)arguments 
withDict:(NSMutableDictionary*)options
+- (void)getCurrencyPattern:(NSMutableArray*)arguments 
withDict:(NSMutableDictionary*)options
 {
     CDVPluginResult* result = nil;
-    NSString* jsString = nil;
     NSString* callBackId = [arguments objectAtIndex:0];
     NSString* currencyCode = nil;
     NSString* numberPattern = nil;
@@ -810,35 +736,35 @@
     int32_t defaultFractionDigits;
     double roundingIncrement;
     Boolean rc;
-    
+
     id value = [options valueForKey:@"currencyCode"];
-    if (value && [value isKindOfClass:[NSString class]]){
+
+    if (value && [value isKindOfClass:[NSString class]]) {
         currencyCode = (NSString*)value;
     }
-    
+
     // first see if there is base currency info available and fill in the 
currency_info structure
-    rc = 
CFNumberFormatterGetDecimalInfoForCurrencyCode((CFStringRef)currencyCode, 
&defaultFractionDigits, &roundingIncrement);
-    
+    rc = CFNumberFormatterGetDecimalInfoForCurrencyCode((__bridge 
CFStringRef)currencyCode, &defaultFractionDigits, &roundingIncrement);
+
     // now set the currency code in the formatter
-    if(rc) {
+    if (rc) {
         CFNumberFormatterRef formatter = 
CFNumberFormatterCreate(kCFAllocatorDefault,
-                                                                 currentLocale,
-                                                                 
kCFNumberFormatterCurrencyStyle);
-        
-        CFNumberFormatterSetProperty(formatter, 
kCFNumberFormatterCurrencyCode, (CFStringRef)currencyCode);
-        CFNumberFormatterSetProperty(formatter, 
kCFNumberFormatterInternationalCurrencySymbol, (CFStringRef)currencyCode);
-        
-        numberPattern = (NSString*)CFNumberFormatterGetFormat(formatter);
-        decimal = (NSString*) CFNumberFormatterCopyProperty(formatter, 
kCFNumberFormatterCurrencyDecimalSeparator);
-        grouping = (NSString*) CFNumberFormatterCopyProperty(formatter, 
kCFNumberFormatterCurrencyGroupingSeparator);
-        
-        NSArray* keys = [NSArray 
arrayWithObjects:@"pattern",@"code",@"fraction",@"rounding",
-                         @"decimal",@"grouping",nil];
-        NSArray* values = [NSArray 
arrayWithObjects:numberPattern,currencyCode,[NSNumber 
numberWithInt:defaultFractionDigits],
-                           [NSNumber 
numberWithDouble:roundingIncrement],decimal,grouping,nil];
+            currentLocale,
+            kCFNumberFormatterCurrencyStyle);
+
+        CFNumberFormatterSetProperty(formatter, 
kCFNumberFormatterCurrencyCode, (__bridge CFStringRef)currencyCode);
+        CFNumberFormatterSetProperty(formatter, 
kCFNumberFormatterInternationalCurrencySymbol, (__bridge 
CFStringRef)currencyCode);
+
+        numberPattern = (__bridge 
NSString*)CFNumberFormatterGetFormat(formatter);
+        decimal = (__bridge_transfer 
NSString*)CFNumberFormatterCopyProperty(formatter, 
kCFNumberFormatterCurrencyDecimalSeparator);
+        grouping = (__bridge_transfer 
NSString*)CFNumberFormatterCopyProperty(formatter, 
kCFNumberFormatterCurrencyGroupingSeparator);
+
+        NSArray* keys = [NSArray arrayWithObjects:@"pattern", @"code", 
@"fraction", @"rounding",
+            @"decimal", @"grouping", nil];
+        NSArray* values = [NSArray arrayWithObjects:numberPattern, 
currencyCode, [NSNumber numberWithInt:defaultFractionDigits],
+            [NSNumber numberWithDouble:roundingIncrement], decimal, grouping, 
nil];
         NSDictionary* dictionary = [NSDictionary dictionaryWithObjects:values 
forKeys:keys];
-        result = [CDVPluginResult resultWithStatus: CDVCommandStatus_OK 
messageAsDictionary: dictionary];
-        jsString = [result toSuccessCallbackString:callBackId];
+        result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK 
messageAsDictionary:dictionary];
         CFRelease(formatter);
     }
     // error
@@ -848,21 +774,17 @@
         [dictionary setValue:[NSNumber numberWithInt:CDV_PATTERN_ERROR] 
forKey:@"code"];
         [dictionary setValue:@"Unable to get pattern" forKey:@"message"];
         result = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR 
messageAsDictionary:dictionary];
-        jsString = [result toErrorCallbackString:callBackId];
     }
-    
-    [self writeJavascript:jsString];
-    
-    [decimal release];
-    [grouping release];
+
+    [self.commandDelegate sendPluginResult:result callbackId:callBackId];
 }
-- (void) dealloc {
+
+- (void)dealloc
+{
     if (currentLocale) {
         CFRelease(currentLocale);
         currentLocale = nil;
     }
-    [super dealloc];
-    
 }
 
-@end
\ No newline at end of file
+@end

http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/blob/237f42e2/CordovaLib/CordovaLib.xcodeproj/project.pbxproj
----------------------------------------------------------------------
diff --git a/CordovaLib/CordovaLib.xcodeproj/project.pbxproj 
b/CordovaLib/CordovaLib.xcodeproj/project.pbxproj
index 22da1a7..5d0d461 100644
--- a/CordovaLib/CordovaLib.xcodeproj/project.pbxproj
+++ b/CordovaLib/CordovaLib.xcodeproj/project.pbxproj
@@ -70,7 +70,7 @@
                88BA573D109BB46F00FB5E78 /* CDVAccelerometer.h in Headers */ = 
{isa = PBXBuildFile; fileRef = 88BA573B109BB46F00FB5E78 /* CDVAccelerometer.h 
*/; settings = {ATTRIBUTES = (Public, ); }; };
                88BA573E109BB46F00FB5E78 /* CDVAccelerometer.m in Sources */ = 
{isa = PBXBuildFile; fileRef = 88BA573C109BB46F00FB5E78 /* CDVAccelerometer.m 
*/; };
                9D76CF3C1625A4C50008A0F6 /* CDVGlobalization.h in Headers */ = 
{isa = PBXBuildFile; fileRef = 9D76CF3A1625A4C50008A0F6 /* CDVGlobalization.h 
*/; };
-               9D76CF3D1625A4C50008A0F6 /* CDVGlobalization.m in Sources */ = 
{isa = PBXBuildFile; fileRef = 9D76CF3B1625A4C50008A0F6 /* CDVGlobalization.m 
*/; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
+               9D76CF3D1625A4C50008A0F6 /* CDVGlobalization.m in Sources */ = 
{isa = PBXBuildFile; fileRef = 9D76CF3B1625A4C50008A0F6 /* CDVGlobalization.m 
*/; };
                C937A4561337599E002C4C79 /* CDVFileTransfer.h in Headers */ = 
{isa = PBXBuildFile; fileRef = C937A4541337599E002C4C79 /* CDVFileTransfer.h 
*/; settings = {ATTRIBUTES = (Public, ); }; };
                C937A4571337599E002C4C79 /* CDVFileTransfer.m in Sources */ = 
{isa = PBXBuildFile; fileRef = C937A4551337599E002C4C79 /* CDVFileTransfer.m 
*/; };
                EB3B3547161CB44D003DBE7D /* CDVCommandQueue.h in Headers */ = 
{isa = PBXBuildFile; fileRef = EB3B3545161CB44D003DBE7D /* CDVCommandQueue.h 
*/; };

Reply via email to