ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/proj/trunk/VTBFileUtil2/IndividualClient.cxx
(Generate patch)

Comparing trunk/VTBFileUtil2/IndividualClient.cxx (file contents):
Revision 260 by douglas, 2003-08-16T02:08:35-07:00 vs.
Revision 274 by douglas, 2003-08-21T23:30:14-07:00

# Line 2 | Line 2
2   //
3   // Douglas Thrift
4   //
5 < // $Id: IndividualClient.cxx,v 1.1 2003/08/16 09:08:35 douglas Exp $
5 > // $Id: IndividualClient.cxx,v 1.7 2003/08/22 06:30:14 douglas Exp $
6  
7   #include "IndividualClient.h"
8 +
9 + unsigned IndividualClient::getNumber(void)
10 + {
11 +        if (number == 0)
12 +        {
13 +                demunge();
14 +        }
15 +
16 +        return number;
17 + }
18 +
19 + string IndividualClient::getName(void)
20 + {
21 +        if (name == "")
22 +        {
23 +                demunge();
24 +        }
25 +
26 +        return name;
27 + }
28 +
29 + string IndividualClient::getFile(void)
30 + {
31 +        if (file == "")
32 +        {
33 +                ostringstream file;
34 +
35 +                file << number;
36 +
37 +                istringstream name(this->name);
38 +
39 +                do
40 +                {
41 +                        string word;
42 +
43 +                        name >> word;
44 +                        name.get();
45 +
46 +                        unsigned punk;
47 +
48 +                        do
49 +                        {
50 +                                punk = word.find_first_of(",.");
51 +
52 +                                if (punk != string::npos) word.erase(punk, 1);
53 +                        }
54 +                        while (punk != string::npos);
55 +
56 +                        lowercase(word);
57 +
58 +                        file << "_" << word;
59 +                }
60 +                while (name.good());
61 +
62 +                this->file = file.str() + '.' + extension;
63 +        }
64 +
65 +        return file;
66 + }
67 +
68 + void IndividualClient::setNumber(unsigned number)
69 + {
70 +        this->number = number;
71 +        file = "";
72 + }
73 +
74 + void IndividualClient::setName(const string& name)
75 + {
76 +        this->name = name;
77 +        file = "";
78 + }
79 +
80 + void IndividualClient::setFile(const string& file)
81 + {
82 +        this->file = file;
83 +        number = 0;
84 +        name = "";
85 + }
86 +
87 + string IndividualClient::extension = "pdf";
88 +
89 + void IndividualClient::demunge(void)
90 + {
91 +        istringstream file(demunge(this->file));
92 +
93 +        file >> number;
94 +        file.get();
95 +
96 +        ostringstream name;
97 +        unsigned count = 1;
98 +
99 +        do
100 +        {
101 +                string word;
102 +
103 +                file >> word;
104 +                file.get();
105 +
106 +                if (word.length() == 1 && word != "i")
107 +                {
108 +                        if (isalpha(word[0])) word += '.';
109 +                }
110 +                else if (word == "jr" || word == "sr" || word == "dr" || word == "mr"
111 +                        || word == "ms" || word == "mrs")
112 +                {
113 +                        word += '.';
114 +                }
115 +                else if (word == "de" && count == 1)
116 +                {
117 +                        --count;
118 +                }
119 +                else if (word == "ii" || word == "iv" || word == "iv")
120 +                {
121 +                        capitalize(word, 0, 2);
122 +                }
123 +                else if (word == "iii")
124 +                {
125 +                        capitalize(word, 0, 3);
126 +                }
127 +                else if (word.length() > 2 && word.find("mc") == 0)
128 +                {
129 +                        capitalize(word, 2);
130 +                }
131 +                else if (word.length() > 3 && word.find("mac") == 0)
132 +                {
133 +                        capitalize(word, 3);
134 +                }
135 +                else if (word.length() > 2 && word.find("o\'") == 0)
136 +                {
137 +                        capitalize(word, 2);
138 +                }
139 +                else if (word.length() > 1)
140 +                {
141 +                        if (!isalpha(word[0]))
142 +                        {
143 +                                capitalize(word, 1);
144 +                        }
145 +                }
146 +
147 +                capitalize(word);
148 +
149 +                switch (++count)
150 +                {
151 +                case 1:
152 +                        name << word << " ";
153 +                        break;
154 +                case 2:
155 +                        name << word;
156 +                        break;
157 +                case 3:
158 +                        name << ", " << word;
159 +                        break;
160 +                default:
161 +                        name << " " << word;
162 +                        break;
163 +                }
164 +        }
165 +        while (file.good());
166 +
167 +        this->name = name.str();
168 + }
169 +
170 + string IndividualClient::demunge(const string& munged)
171 + {
172 +        string demunged;
173 +
174 +        for (unsigned index = 0; index < munged.length() - extension.length() - 1;
175 +                index++)
176 +        {
177 +                if (munged[index] == '_')
178 +                {
179 +                        demunged += ' ';
180 +                }
181 +                else
182 +                {
183 +                        demunged += munged[index];
184 +                }
185 +        }
186 +
187 +        return demunged;
188 + }
189 +
190 + void IndividualClient::capitalize(string& word, unsigned index, unsigned count)
191 + {
192 +        for (unsigned number = index; number < index + count; number++)
193 +        {
194 +                word[number] = toupper(word[number]);
195 +        }
196 + }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines