ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/proj/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 277 by douglas, 2003-08-24T00:31:45-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.8 2003/08/24 07:31:45 douglas Exp $
6  
7   #include "IndividualClient.h"
8 +
9 + unsigned IndividualClient::getNumber(void)
10 + {
11 +        if (number == 0 && file != "")
12 +        {
13 +                demunge();
14 +        }
15 +
16 +        return number;
17 + }
18 +
19 + string IndividualClient::getName(void)
20 + {
21 +        if (name == "" && file != "")
22 +        {
23 +                demunge();
24 +        }
25 +
26 +        return name;
27 + }
28 +
29 + string IndividualClient::getFile(void)
30 + {
31 +        if (file == "" && number != 0 && name != "")
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() > word.find_first_of("\'-") + 1 &&
136 +                        word.find_first_not_of("\'-") != string::npos)
137 +                {
138 +                        capitalize(word, word.find_first_of("\'-") + 1);
139 +                }
140 +                else if (word.length() > 1)
141 +                {
142 +                        if (!isalpha(word[0]))
143 +                        {
144 +                                capitalize(word, 1);
145 +                        }
146 +                }
147 +                else if (word == "lefevre")
148 +                {
149 +                        capitalize(word, 2);
150 +                }
151 +
152 +                capitalize(word);
153 +
154 +                switch (++count)
155 +                {
156 +                case 1:
157 +                        name << word << " ";
158 +                        break;
159 +                case 2:
160 +                        name << word;
161 +                        break;
162 +                case 3:
163 +                        name << ", " << word;
164 +                        break;
165 +                default:
166 +                        name << " " << word;
167 +                        break;
168 +                }
169 +        }
170 +        while (file.good());
171 +
172 +        this->name = name.str();
173 + }
174 +
175 + string IndividualClient::demunge(const string& munged)
176 + {
177 +        string demunged;
178 +
179 +        for (unsigned index = 0; index < munged.length() - extension.length() - 1;
180 +                index++)
181 +        {
182 +                if (munged[index] == '_')
183 +                {
184 +                        demunged += ' ';
185 +                }
186 +                else
187 +                {
188 +                        demunged += munged[index];
189 +                }
190 +        }
191 +
192 +        return demunged;
193 + }
194 +
195 + void IndividualClient::capitalize(string& word, unsigned index, unsigned count)
196 + {
197 +        for (unsigned number = index; number < index + count; number++)
198 +        {
199 +                word[number] = toupper(word[number]);
200 +        }
201 + }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines