Issue 370, allow custom response URLs
[zxing.git] / iphone / Classes / ResultParser.m
1 //
2 //  ResultParser.m
3 //  ZXing
4 //
5 //  Created by Christian Brunschen on 25/06/2008.
6 /*
7  * Copyright 2008 ZXing authors
8  *
9  * Licensed under the Apache License, Version 2.0 (the "License");
10  * you may not use this file except in compliance with the License.
11  * You may obtain a copy of the License at
12  *
13  *      http://www.apache.org/licenses/LICENSE-2.0
14  *
15  * Unless required by applicable law or agreed to in writing, software
16  * distributed under the License is distributed on an "AS IS" BASIS,
17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18  * See the License for the specific language governing permissions and
19  * limitations under the License.
20  */
21
22 #import "ResultParser.h"
23
24 #import "MeCardParser.h"
25 #import "EmailDoCoMoResultParser.h"
26 #import "BookmarkDoCoMoResultParser.h"
27 #import "TelResultParser.h"
28 #import "GeoResultParser.h"
29 #import "URLTOResultParser.h"
30 #import "URLResultParser.h"
31 #import "TextResultParser.h"
32 #import "SMSResultParser.h"
33 #import "SMSTOResultParser.h"
34 #import "PlainEmailResultParser.h"
35
36 @implementation ResultParser
37
38 static NSArray *resultParsers = nil;
39 + (NSArray *)resultParsers {
40   if (resultParsers == nil) {
41     resultParsers = 
42     [[NSArray alloc] initWithObjects:
43      [MeCardParser class],
44      [EmailDoCoMoResultParser class],
45      [BookmarkDoCoMoResultParser class],
46      [TelResultParser class],
47      [GeoResultParser class],
48      [SMSTOResultParser class],
49      [SMSResultParser class],
50      [URLTOResultParser class],
51      [URLResultParser class],
52      [PlainEmailResultParser class],
53      [TextResultParser class],
54      nil];
55   }
56   return resultParsers;
57 }
58
59 + (ParsedResult *)parsedResultForString:(NSString *)s {
60 #ifdef DEBUG
61   NSLog(@"parsing result:\n<<<\n%@\n>>>\n", s);
62 #endif
63   for (Class c in [self resultParsers]) {
64 #ifdef DEBUG
65     NSLog(@"trying %@", NSStringFromClass(c));
66 #endif
67     ParsedResult *result = [c parsedResultForString:s];
68     if (result != nil) {
69 #ifdef DEBUG
70       NSLog(@"parsed as %@ %@", NSStringFromClass([result class]), result);
71 #endif
72       return result;
73     }
74   }
75   return nil;
76 }
77
78 @end