<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -29,9 +29,40 @@
 
 @interface NSNumber (GHUtils)
 
+/*!
+ @method gh_humanSize
+ @abstract File size label
+ @result '904 b', '32 KB', '1.1 MB', 
+ */
 - (NSString *)gh_humanSize;
+
+/*!
+ @method gh_humanSize
+ @abstract File size label
+ @param delimiter In between numeric and unit
+ @result '904 b', '32 KB', '1.1 MB', 
+ */
 - (NSString *)gh_humanSizeWithDelimiter:(NSString *)delimiter;
 
+/*!
+ Ordinalize.
+ @result Ordinal string for integer.
+ 0 =&gt; nil
+ 1 =&gt; &quot;1st&quot;
+ 2 =&gt; &quot;2nd&quot;
+ 3 =&gt; &quot;3rd&quot;
+ 4-9 -&gt; &quot;4th&quot;, &quot;5th&quot;, ...
+ Ending in 11, 12 or 13 =&gt; &quot;111th&quot;, &quot;212th&quot;, ...
+ */
+- (NSString *)gh_ordinalize;
+
+/*!
+ Ordinalize. 
+ @result Ordinal string for integer.
+ @see gh_ordinalize
+ */
++ (NSString *)gh_ordinalize:(NSInteger)value;
+
 + (NSNumber *)gh_bool:(BOOL)b;
 + (NSNumber *)gh_no;
 + (NSNumber *)gh_yes;</diff>
      <filename>Classes/GHNSNumber+Utils.h</filename>
    </modified>
    <modified>
      <diff>@@ -31,21 +31,10 @@
 
 @implementation NSNumber (GHUtils)
 
-/*!
- @method gh_humanSize
- @abstract File size label
- @result '904 b', '32 KB', '1.1 MB', 
- */
 - (NSString *)gh_humanSize {
   return [self gh_humanSizeWithDelimiter:@&quot; &quot;];
 }
 
-/*!
- @method gh_humanSize
- @abstract File size label
- @param delimiter In between numeric and unit
- @result '904 b', '32 KB', '1.1 MB', 
- */
 - (NSString *)gh_humanSizeWithDelimiter:(NSString *)delimiter {
   double value = [self doubleValue];
 	double byteTest = 1024;
@@ -67,6 +56,32 @@
   return nil;
 }
 
+- (NSString *)gh_ordinalize {
+  return [NSNumber gh_ordinalize:[self integerValue]];
+}
+
++ (NSString *)gh_ordinalize:(NSInteger)value {
+  NSString *suffix = nil;
+  switch(value % 10) {
+    case 1: suffix = @&quot;st&quot;; break;
+    case 2: suffix = @&quot;nd&quot;; break;
+    case 3: suffix = @&quot;rd&quot;; break;
+    case 0:
+    case 4: 
+    case 5: 
+    case 6: 
+    case 7: 
+    case 8: 
+    case 9: 
+      suffix = @&quot;th&quot;; break;
+  }
+  
+  if (value % 100 &gt;= 11 &amp;&amp; value % 100 &lt;= 13) suffix = @&quot;th&quot;; // Handle 11-13
+  if (value == 0) suffix = nil;
+  if (suffix) return [NSString stringWithFormat:@&quot;%d%@&quot;, value, suffix];
+  return [NSString stringWithFormat:@&quot;%d&quot;, value];
+}
+
 + (NSNumber *)gh_bool:(BOOL)b {		
   if (!b) {
 		static NSNumber *NumberForNo = NULL;</diff>
      <filename>Classes/GHNSNumber+Utils.m</filename>
    </modified>
    <modified>
      <diff>@@ -27,4 +27,28 @@
 	GHTestLog(@&quot;maxllSizeString=%@&quot;, maxllSizeString);
 }
 
+- (void)testOrdinalize {
+  GHAssertEqualStrings([[NSNumber numberWithInteger:1] gh_ordinalize], @&quot;1st&quot;, nil);
+  GHAssertEqualStrings([[NSNumber numberWithInteger:2] gh_ordinalize], @&quot;2nd&quot;, nil);
+  GHAssertEqualStrings([[NSNumber numberWithInteger:3] gh_ordinalize], @&quot;3rd&quot;, nil);
+  GHAssertEqualStrings([[NSNumber numberWithInteger:4] gh_ordinalize], @&quot;4th&quot;, nil);
+  GHAssertEqualStrings([[NSNumber numberWithInteger:5] gh_ordinalize], @&quot;5th&quot;, nil);
+  GHAssertEqualStrings([[NSNumber numberWithInteger:6] gh_ordinalize], @&quot;6th&quot;, nil);
+  GHAssertEqualStrings([[NSNumber numberWithInteger:7] gh_ordinalize], @&quot;7th&quot;, nil);
+  GHAssertEqualStrings([[NSNumber numberWithInteger:8] gh_ordinalize], @&quot;8th&quot;, nil);
+  GHAssertEqualStrings([[NSNumber numberWithInteger:9] gh_ordinalize], @&quot;9th&quot;, nil);
+  GHAssertEqualStrings([[NSNumber numberWithInteger:10] gh_ordinalize], @&quot;10th&quot;, nil);
+  GHAssertEqualStrings([[NSNumber numberWithInteger:11] gh_ordinalize], @&quot;11th&quot;, nil);
+  GHAssertEqualStrings([[NSNumber numberWithInteger:12] gh_ordinalize], @&quot;12th&quot;, nil);
+  GHAssertEqualStrings([[NSNumber numberWithInteger:13] gh_ordinalize], @&quot;13th&quot;, nil);
+  GHAssertEqualStrings([[NSNumber numberWithInteger:14] gh_ordinalize], @&quot;14th&quot;, nil);
+  GHAssertEqualStrings([[NSNumber numberWithInteger:111] gh_ordinalize], @&quot;111th&quot;, nil);
+  GHAssertEqualStrings([[NSNumber numberWithInteger:212] gh_ordinalize], @&quot;212th&quot;, nil);
+  GHAssertEqualStrings([[NSNumber numberWithInteger:313] gh_ordinalize], @&quot;313th&quot;, nil);
+  GHAssertEqualStrings([[NSNumber numberWithInteger:221] gh_ordinalize], @&quot;221st&quot;, nil);
+  GHAssertEqualStrings([[NSNumber numberWithInteger:222] gh_ordinalize], @&quot;222nd&quot;, nil);
+  
+  GHAssertEqualStrings([NSNumber gh_ordinalize:1], @&quot;1st&quot;, nil);
+}
+
 @end</diff>
      <filename>Tests/NSNumberUtilsTest.m</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>6686772c044f2034753a43543022681d31c90678</id>
    </parent>
  </parents>
  <author>
    <name>Gabriel Handford</name>
    <email>gabrielh@gmail.com</email>
  </author>
  <url>http://github.com/gabriel/gh-kit/commit/66555e08bdc5fce92eaa91f41f421d8ba3addfc0</url>
  <id>66555e08bdc5fce92eaa91f41f421d8ba3addfc0</id>
  <committed-date>2009-10-12T17:03:12-07:00</committed-date>
  <authored-date>2009-10-12T17:03:12-07:00</authored-date>
  <message>Ordinalize</message>
  <tree>3e6301656d897b021f8b90602802872aa2fdab96</tree>
  <committer>
    <name>Gabriel Handford</name>
    <email>gabrielh@gmail.com</email>
  </committer>
</commit>
