Sharing in the object info window can be updated.
[pithos-macos] / pithos-macos / MetadataKeyFormatter.m
1 //
2 //  MetadataKeyFormatter.m
3 //  pithos-macos
4 //
5 // Copyright 2011 GRNET S.A. All rights reserved.
6 //
7 // Redistribution and use in source and binary forms, with or
8 // without modification, are permitted provided that the following
9 // conditions are met:
10 // 
11 //   1. Redistributions of source code must retain the above
12 //      copyright notice, this list of conditions and the following
13 //      disclaimer.
14 // 
15 //   2. Redistributions in binary form must reproduce the above
16 //      copyright notice, this list of conditions and the following
17 //      disclaimer in the documentation and/or other materials
18 //      provided with the distribution.
19 // 
20 // THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
21 // OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
22 // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
24 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
27 // USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
28 // AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
30 // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31 // POSSIBILITY OF SUCH DAMAGE.
32 // 
33 // The views and conclusions contained in the software and
34 // documentation are those of the authors and should not be
35 // interpreted as representing official policies, either expressed
36 // or implied, of GRNET S.A.
37
38 #import "MetadataKeyFormatter.h"
39
40 @implementation MetadataKeyFormatter
41
42 - (NSString *)stringForObjectValue:(id)anObject {
43         if (anObject != nil)
44                 return [NSString stringWithString:anObject];
45         return nil;
46 }
47
48 - (BOOL)getObjectValue:(id *)anObject forString:(NSString *)string errorDescription:(NSString **)error {
49         *anObject = [NSString stringWithString:string];
50         return YES;
51 }
52
53 - (BOOL)isPartialStringValid:(NSString *)partialString newEditingString:(NSString **)newString errorDescription:(NSString **)error {
54         if ([partialString length] == 0) {
55         *newString = nil;
56         return NO;
57     }
58     
59         unichar aChar;  
60         for (int i = 0; i < [partialString length]; i++) {
61                 aChar = [partialString characterAtIndex:i];
62                 if (!((aChar == '_') || 
63               ((aChar >= '0') && (aChar <= '9')) || 
64               ((aChar >= 'A') && (aChar <= 'Z')) || 
65               ((aChar >= 'a') && (aChar <= 'z')))) {
66                         *newString = nil;
67                         return NO;
68                 }
69         }
70
71         *newString = [partialString lowercaseString];
72         return NO;
73 }
74
75 @end