]> err.no Git - sope/blob - sope-appserver/WEExtensions/WExCalElemBuilder.m
added strict OSX bundle dependencies
[sope] / sope-appserver / WEExtensions / WExCalElemBuilder.m
1 /*
2   Copyright (C) 2000-2005 SKYRIX Software AG
3
4   This file is part of SOPE.
5
6   SOPE is free software; you can redistribute it and/or modify it under
7   the terms of the GNU Lesser General Public License as published by the
8   Free Software Foundation; either version 2, or (at your option) any
9   later version.
10
11   SOPE is distributed in the hope that it will be useful, but WITHOUT ANY
12   WARRANTY; without even the implied warranty of MERCHANTABILITY or
13   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
14   License for more details.
15
16   You should have received a copy of the GNU Lesser General Public
17   License along with SOPE; see the file COPYING.  If not, write to the
18   Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
19   02111-1307, USA.
20 */
21
22 #include <NGObjWeb/WOxElemBuilder.h>
23
24 /*
25   This builder builds various calendaring elements from the WEExtensions
26   library.
27
28   All tags are mapped into the <var:> namespace (XMLNS_OD_BIND).
29
30   Supported tags:
31     <var:month-overview .../> to WEMonthOverview
32     <var:month-label    .../> to WEMonthLabel
33     <var:month-title    .../> to WEMonthTitle
34     <var:month-info     .../> to WEMonthOverviewInfoMode
35     <var:month          .../> to WEMonthOverviewContentMode
36
37     <var:week-overview  .../> to WEWeekOverview
38     <var:week-title     .../> to WEWeekOverviewTitleMode
39     <var:week-info      .../> to WEWeekOverviewInfoMode
40     <var:week-pminfo    .../> to WEWeekOverviewPMInfoMode
41     <var:week           .../> to WEWeekOverviewContentMode
42     <var:week-header    .../> to WEWeekOverviewHeaderMode
43     <var:week-footer    .../> to WEWeekOverviewFooterMode
44
45     <var:weekcol-view   .../> to WEWeekColumnView
46     <var:weekcol-title  .../> to WEWeekColumnViewTitleMode
47     <var:weekcol-info   .../> to WEWeekColumnViewInfoMode
48     <var:weekcol        .../> to WEWeekColumnViewContentMode
49 */
50
51 @interface WExCalElemBuilder : WOxTagClassElemBuilder
52 {
53 }
54
55 @end
56
57 #include <SaxObjC/XMLNamespaces.h>
58 #include "common.h"
59
60 @implementation WExCalElemBuilder
61
62 - (Class)classForElement:(id<DOMElement>)_element {
63   NSString *tagName;
64   unsigned tl;
65   unichar  c1;
66   
67   if (![[_element namespaceURI] isEqualToString:XMLNS_OD_BIND])
68     return Nil;
69   
70   tagName = [_element tagName];
71   if ((tl = [tagName length]) < 4)
72     return Nil;
73
74   c1 = [tagName characterAtIndex:0];
75
76   if (c1 == 'm') {
77     /* month stuff */
78
79     if (![tagName hasPrefix:@"month"])
80       return Nil;
81     
82     switch (tl) {
83       case 5:
84         return NSClassFromString(@"WEMonthOverviewContentMode");
85
86       case 10:
87         if ([tagName isEqualToString:@"month-info"])
88           return NSClassFromString(@"WEMonthOverviewInfoMode");
89         break;
90         
91       case 11:
92         if ([tagName isEqualToString:@"month-label"])
93           return NSClassFromString(@"WEMonthLabel");
94         if ([tagName isEqualToString:@"month-title"])
95           return NSClassFromString(@"WEMonthTitle");
96         break;
97         
98       case 14:
99         if ([tagName isEqualToString:@"month-overview"])
100           return NSClassFromString(@"WEMonthOverview");
101         break;
102     }
103   }
104   else if (c1 == 'w') {
105     /* week stuff */
106     
107     if (![tagName hasPrefix:@"week"])
108       return Nil;
109     
110     switch (tl) {
111       case 4:
112         return NSClassFromString(@"WEWeekOverviewContentMode");
113         
114       case 7:
115         if ([tagName isEqualToString:@"weekcol"])
116           return NSClassFromString(@"WEWeekColumnViewContentMode");
117         break;
118
119       case 9:
120         if ([tagName isEqualToString:@"week-info"])
121           return NSClassFromString(@"WEWeekOverviewInfoMode");
122         break;
123         
124       case 10:
125         if ([tagName isEqualToString:@"week-title"])
126           return NSClassFromString(@"WEWeekOverviewTitleMode");
127         break;
128         
129       case 11:
130         if ([tagName isEqualToString:@"week-header"])
131           return NSClassFromString(@"WEWeekOverviewHeaderMode");
132         if ([tagName isEqualToString:@"week-footer"])
133           return NSClassFromString(@"WEWeekOverviewFooterMode");
134         if ([tagName isEqualToString:@"week-pminfo"])
135           return NSClassFromString(@"WEWeekOverviewPMInfoMode");
136         break;
137
138       case 12:
139         if ([tagName isEqualToString:@"weekcol-view"])
140           return NSClassFromString(@"WEWeekColumnView");
141         if ([tagName isEqualToString:@"weekcol-info"])
142           return NSClassFromString(@"WEWeekColumnViewInfoMode");
143         break;
144
145       case 13:
146         if ([tagName isEqualToString:@"weekcol-title"])
147           return NSClassFromString(@"WEWeekColumnViewTitleMode");
148         if ([tagName isEqualToString:@"week-overview"])
149           return NSClassFromString(@"WEWeekOverview");
150         break;
151     }
152   }
153   
154   return Nil;
155 }
156
157 @end /* WExCalElemBuilder */