home *** CD-ROM | disk | FTP | other *** search
/ OpenStep 4.2J (Developer) / os42jdev.iso / NextDeveloper / Examples / AppKit / Yap / IntegerFormatter.m < prev    next >
Text File  |  1996-04-10  |  2KB  |  68 lines

  1. /*
  2.  *  IntegerFormatter.m
  3.  *  Author: Garrick Toubassi
  4.  *  Modified: Jan 96 for Yap, Ali Ozer
  5.  *
  6.  *  Very simple integer formatter. Allows formatting and validating integers in a given range.
  7.  *
  8.  *  You may freely copy, distribute and reuse the code in this example.
  9.  *  NeXT disclaims any warranty of any kind, expressed or implied,
  10.  *  as to its fitness for any particular use.
  11.  */
  12.  
  13. #import <AppKit/AppKit.h>
  14. #import "IntegerFormatter.h"
  15. #import <limits.h>
  16.  
  17. @implementation IntegerFormatter
  18.  
  19. - (id)init {
  20.     return [self initWithMinValue:INT_MIN maxValue:INT_MAX];
  21. }
  22.  
  23. - (id)initWithMinValue:(int)min maxValue:(int)max {
  24.     if (self = [super init]) {
  25.     _min = min;
  26.     _max = max;
  27.     }
  28.     return self;
  29. }
  30.  
  31. - (int)minValue {
  32.     return _min;
  33. }
  34.  
  35. - (int)maxValue {
  36.     return _max;
  37. }
  38.  
  39. - (NSString *)stringForObjectValue:(id)obj {
  40.     if (![obj isKindOfClass:[NSNumber class]]) return nil;
  41.     return [NSString localizedStringWithFormat:@"%d", [obj intValue]];
  42. }
  43.  
  44. - (BOOL)getObjectValue:(id *)obj forString:(NSString *)string errorDescription:(NSString **)error {
  45.     int intResult;
  46.     NSScanner *scanner = [NSScanner localizedScannerWithString:string];
  47.     NSString *err = nil;
  48.  
  49.     if ([scanner scanInt:&intResult]) {
  50.         if ([scanner isAtEnd]) {
  51.             if (intResult < _min || intResult > _max) {
  52.                 err = NSLocalizedStringFromTable(@"Value out of allowed range", @"IntegerFormatter", @"Message shown when an integer that is out of range is entered by the user.");
  53.             } else {
  54.                 if (obj) *obj = [NSNumber numberWithInt:intResult];
  55.             }
  56.         } else {
  57.             err = NSLocalizedStringFromTable(@"Junk at end", @"IntegerFormatter", @"Message shown the integer entered by the user has extra characters at the end.");
  58.         }
  59.     } else {
  60.         err = NSLocalizedStringFromTable(@"Need an integer", @"IntegerFormatter", @"Message shown when the user's input is not an integer");
  61.     }
  62.     if (err && error) *error = err;
  63.     return err ? NO : YES;
  64. }
  65.  
  66. @end
  67.  
  68.