<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>Classes/GHKitMacros.h</filename>
    </added>
    <added>
      <filename>README.md</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -66,23 +66,5 @@
 #import &quot;GHKitIPhone.h&quot;
 #endif
 
-// Defines
-
-#define GHInteger(n) [NSNumber numberWithInteger:n]
-
-#define GHStr(fmt, ...) \
-[NSString stringWithFormat:(fmt), ## __VA_ARGS__]
-
-#define GHDict(key, ...) \
-[NSDictionary dictionaryWithKeysAndObjectsMaybeNil: key, ## __VA_ARGS__, nil]
-
-#define GHCGRectToString(rect) NSStringFromRect(NSRectFromCGRect(rect))
-#define GHCGSizeToString(size) NSStringFromSize(NSSizeFromCGSize(size))
-#define GHCGPointToString(point) NSStringFromPoint(NSPointFromCGPoint(point))
-
-#define GHAssertMainThread() NSAssert([NSThread isMainThread], @&quot;Should be on main thread&quot;)
-
-// Default epsilon for float comparisons
-#define GH_EPSILON 1.0E-5
-
-#define GHDescription(obj, ...) [[obj dictionaryWithValuesForKeys:[NSArray arrayWithObjects:__VA_ARGS__, nil]] description]
+// Macros
+#import &quot;GHKitMacros.h&quot;
\ No newline at end of file</diff>
      <filename>Classes/GHKit.h</filename>
    </modified>
    <modified>
      <diff>@@ -33,17 +33,18 @@
 
 @implementation NSDate (GHParsing)
 
-/*!
-*/
 + (NSDate *)gh_parseISO8601:(NSString *)dateString { 
+	if (!dateString) return nil;
   return [[self gh_iso8601DateFormatter] dateFromString:dateString];
 }
 
 + (NSDate *)gh_parseRFC822:(NSString *)dateString {
+	if (!dateString) return nil;
   return [[self gh_rfc822DateFormatter] dateFromString:dateString];
 }
 
 + (NSDate *)gh_parseHTTP:(NSString *)dateString {  
+	if (!dateString) return nil;
   NSDate *parsed = nil;
   parsed = [[self gh_rfc1123DateFormatter] dateFromString:dateString];
   if (parsed) return parsed;</diff>
      <filename>Classes/GHNSDate+Parsing.m</filename>
    </modified>
    <modified>
      <diff>@@ -76,4 +76,6 @@
 
 - (void)gh_performSelector:(SEL)selector onMainThread:(BOOL)onMainThread waitUntilDone:(BOOL)waitUntilDone withObjects:object, ...;
 
+- (void)gh_performSelector:(SEL)selector onMainThread:(BOOL)onMainThread waitUntilDone:(BOOL)waitUntilDone arguments:(NSArray *)arguments;
+
 @end</diff>
      <filename>Classes/GHNSObject+Invocation.h</filename>
    </modified>
    <modified>
      <diff>@@ -62,6 +62,10 @@
 
 - (void)gh_performSelector:(SEL)selector onMainThread:(BOOL)onMainThread waitUntilDone:(BOOL)waitUntilDone withObjects:object, ... {
 	GHConvertVarArgs(object);
+	[self gh_performSelector:selector onMainThread:onMainThread waitUntilDone:waitUntilDone arguments:arguments];
+}	
+
+- (void)gh_performSelector:(SEL)selector onMainThread:(BOOL)onMainThread waitUntilDone:(BOOL)waitUntilDone arguments:(NSArray *)arguments {
 	if (!onMainThread) {
 		[NSInvocation gh_invokeWithTarget:self selector:selector arguments:arguments];	
 	} else {</diff>
      <filename>Classes/GHNSObject+Invocation.m</filename>
    </modified>
    <modified>
      <diff>@@ -46,6 +46,7 @@
 		00AF11900F2D7EE6009F0ABA /* NSDate+ParsingTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 005D0C3F0E19C03B003FAB86 /* NSDate+ParsingTest.m */; };
 		00AF11910F2D7EE6009F0ABA /* GHLoggerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 002E759E0F2C45DD00427636 /* GHLoggerTest.m */; };
 		00AF12580F2D8389009F0ABA /* GHKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00970A140F2836A100189A9D /* GHKit.framework */; };
+		00BB7B010F3175E500B3924D /* GHKitMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 00BB7AD80F3173BB00B3924D /* GHKitMacros.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		00CBE5C60E24783400E94F7B /* GTMDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 00CBE5C50E24783400E94F7B /* GTMDefines.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		00CE8AAE0F24028900DD6464 /* GHNSObject+Invocation.h in Headers */ = {isa = PBXBuildFile; fileRef = 00CE8AAB0F24028900DD6464 /* GHNSObject+Invocation.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		00CE8AAF0F24028900DD6464 /* GHNSObject+Invocation.m in Sources */ = {isa = PBXBuildFile; fileRef = 00CE8AAC0F24028900DD6464 /* GHNSObject+Invocation.m */; };
@@ -178,6 +179,8 @@
 		00AF10E60F2D5277009F0ABA /* TestsMain.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TestsMain.m; sourceTree = &quot;&lt;group&gt;&quot;; };
 		00AF11760F2D7DF8009F0ABA /* GHKitTests_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GHKitTests_Prefix.pch; sourceTree = &quot;&lt;group&gt;&quot;; };
 		00B599E30F1D259200359A10 /* NSURL+UtilsTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = &quot;NSURL+UtilsTest.m&quot;; sourceTree = &quot;&lt;group&gt;&quot;; };
+		00BB7AD80F3173BB00B3924D /* GHKitMacros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GHKitMacros.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+		00BB7B060F31769200B3924D /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README.md; sourceTree = &quot;&lt;group&gt;&quot;; };
 		00CBE5C50E24783400E94F7B /* GTMDefines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMDefines.h; sourceTree = &quot;&lt;group&gt;&quot;; };
 		00CE8AAB0F24028900DD6464 /* GHNSObject+Invocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = &quot;GHNSObject+Invocation.h&quot;; sourceTree = &quot;&lt;group&gt;&quot;; };
 		00CE8AAC0F24028900DD6464 /* GHNSObject+Invocation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = &quot;GHNSObject+Invocation.m&quot;; sourceTree = &quot;&lt;group&gt;&quot;; };
@@ -368,6 +371,7 @@
 		0867D691FE84028FC02AAC07 /* GHKit */ = {
 			isa = PBXGroup;
 			children = (
+				00BB7B060F31769200B3924D /* README.md */,
 				08FB77AEFE84172EC02AAC07 /* Classes */,
 				52857D580E199B530011DA5C /* Tests */,
 				0062B6740F2C08AD00B0562A /* XcodeConfig */,
@@ -406,6 +410,7 @@
 			children = (
 				52D57DD70E1C0BAD00709FB4 /* External */,
 				52857C8E0E1997B50011DA5C /* GHKit.h */,
+				00BB7AD80F3173BB00B3924D /* GHKitMacros.h */,
 				52857C8F0E1997B50011DA5C /* GHNSDate+Parsing.h */,
 				52857C900E1997B50011DA5C /* GHNSDate+Parsing.m */,
 				52857C910E1997B50011DA5C /* GHNSFileManager+Utils.h */,
@@ -541,6 +546,7 @@
 				005B0A9F0F22B7A80004F351 /* GHNSInvocation+Utils.h in Headers */,
 				00CE8AAE0F24028900DD6464 /* GHNSObject+Invocation.h in Headers */,
 				002E75800F2C424C00427636 /* GHLogger.h in Headers */,
+				00BB7B010F3175E500B3924D /* GHKitMacros.h in Headers */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};</diff>
      <filename>GHKit.xcodeproj/project.pbxproj</filename>
    </modified>
    <modified>
      <diff>@@ -19,9 +19,7 @@
 	&lt;key&gt;CFBundleSignature&lt;/key&gt;
 	&lt;string&gt;GABE&lt;/string&gt;
 	&lt;key&gt;CFBundleVersion&lt;/key&gt;
-	&lt;string&gt;1.0.092001&lt;/string&gt;
-	&lt;key&gt;NSMainNibFile&lt;/key&gt;
-	&lt;string&gt;GHUnitIPhone&lt;/string&gt;
+	&lt;string&gt;0.3.1&lt;/string&gt;
 	&lt;key&gt;NSPrincipalClass&lt;/key&gt;
 	&lt;string&gt;&lt;/string&gt;
 &lt;/dict&gt;</diff>
      <filename>Info.plist</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>7c480618f8c8bfc1154a82262ba47489fe115b5b</id>
    </parent>
  </parents>
  <author>
    <name>Gabriel Handford</name>
    <email>gabrielh@gmail.com</email>
  </author>
  <url>http://github.com/gabriel/gh-kit/commit/a1a5b23561d79ddebe16e5730653bed36aaf2ce2</url>
  <id>a1a5b23561d79ddebe16e5730653bed36aaf2ce2</id>
  <committed-date>2009-01-28T22:35:38-08:00</committed-date>
  <authored-date>2009-01-28T22:35:38-08:00</authored-date>
  <message>Fixes</message>
  <tree>0bac3d768b4d8c59edcc4e646fe03dd95266e7ac</tree>
  <committer>
    <name>Gabriel Handford</name>
    <email>gabrielh@gmail.com</email>
  </committer>
</commit>
