ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/repos/FeepingCreaturism/Jargon.cpp
Revision: 222
Committed: 2004-09-05T22:52:35-07:00 (20 years, 9 months ago) by Douglas Thrift
File size: 6056 byte(s)
Log Message:
Ok, Jay, again.

File Contents

# User Rev Content
1 Douglas Thrift 196 // Feeping Creaturism
2     //
3     // Douglas Thrift
4     //
5     // $Id$
6    
7     #include "Jargon.hpp"
8    
9 Douglas Thrift 203 Jargon::Jargon(const ext::String& path, bool include) : include(include)
10 Douglas Thrift 196 {
11 Douglas Thrift 201 std::vector<std::string> args(1, FeepingCreaturism::program);
12 Douglas Thrift 196
13     args.push_back(path);
14 Douglas Thrift 201 args.push_back("jargon.xsl");
15 Douglas Thrift 196
16     redi::pstreambuf pin("/usr/local/bin/Xalan", args, std::ios_base::in);
17 Douglas Thrift 203 ios::FromStreamBuf adaptor(pin);
18 Douglas Thrift 208
19 Douglas Thrift 196 ext::Handle<xml::Document> document(xml::Parse(adaptor));
20 Douglas Thrift 202 ext::Handle<xml::Node> jargon(*document/"jargon");
21 Douglas Thrift 196
22 Douglas Thrift 202 word = *jargon/"word";
23     pronunciation = *jargon/"pronunciation";
24     grammar = *jargon/"grammar";
25 Douglas Thrift 209 definition = *jargon/"definition"/"p";
26 Douglas Thrift 196 }
27    
28 Douglas Thrift 208 void Jargon::display(ios::PrintWriter& pout, xml::TextWriter& xhtml) const
29     {
30     {
31     xml::ScopeElement p(xhtml, "p");
32    
33     xhtml.OpenElement("strong");
34     xhtml.OutputText(word + ":");
35     xhtml.CloseElement();
36    
37 Douglas Thrift 213 if (!pronunciation.IsEmpty()) xhtml.OutputText(" " + pronunciation);
38     if (!pronunciation.IsEmpty() && !grammar.IsEmpty()) xhtml.OutputText(",");
39     if (!grammar.IsEmpty()) xhtml.OutputText(" " + grammar);
40 Douglas Thrift 208 }
41    
42 Douglas Thrift 220 definition.WriteTo(xhtml);
43 Douglas Thrift 208 }
44    
45 Douglas Thrift 203 struct Section
46 Douglas Thrift 196 {
47 Douglas Thrift 203 Section(const ext::String& name, const ext::String& path,
48     const ext::String& subdomain = "www") : name(name), url("http://"
49     + subdomain + ".douglasthrift.net" + path) {}
50     ext::String name, url;
51     };
52 Douglas Thrift 196
53 Douglas Thrift 203 ios::PrintWriter& operator<<(ios::PrintWriter& pout, const Jargon& jargon)
54     {
55     if (jargon.include)
56     {
57 Douglas Thrift 222 xml::TextWriter xhtml(pout, true);
58 Douglas Thrift 196
59 Douglas Thrift 208 jargon.display(pout, xhtml);
60    
61 Douglas Thrift 203 return pout;
62     }
63 Douglas Thrift 196
64 Douglas Thrift 207 pout << "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"\n"
65 Douglas Thrift 203 << "\t\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n";
66    
67 Douglas Thrift 222 xml::TextWriter xhtml(pout, true);
68 Douglas Thrift 203 xml::ScopeElement html(xhtml, "html");
69    
70     xhtml.SetAttribute("xmlns", "http://www.w3.org/1999/xhtml");
71    
72     {
73     xml::ScopeElement head(xhtml, "head");
74    
75     xhtml.OpenElement("title");
76 Douglas Thrift 208 xhtml.OutputText("Douglas Thrift");
77    
78     pout << "'";
79    
80     xhtml.OutputText("s Computers Website | Jargon: " + jargon.word);
81 Douglas Thrift 203 xhtml.CloseElement();
82     xhtml.OpenElement("link");
83     xhtml.SetAttribute("rel", "stylesheet");
84     xhtml.SetAttribute("href", "../../stylesheets/regular.css");
85     xhtml.SetAttribute("type", "text/css");
86     xhtml.CloseElement();
87     xhtml.OpenElement("link");
88     xhtml.SetAttribute("rel", "Icon");
89     xhtml.SetAttribute("href", "../../favicon.ico");
90     xhtml.SetAttribute("type", "image/ico");
91     xhtml.CloseElement();
92     xhtml.OpenElement("script");
93     xhtml.SetAttribute("src", "../../nav/functions.js");
94     xhtml.SetAttribute("type", "text/javascript");
95     xhtml.OutputText("");
96     xhtml.CloseElement();
97     }
98    
99     {
100     xml::ScopeElement body(xhtml, "body");
101    
102     {
103     xml::ScopeElement div(xhtml, "div");
104    
105     xhtml.OpenElement("p");
106     xhtml.SetAttribute("class", "center");
107     xhtml.OpenElement("a");
108     xhtml.SetAttribute("href", Section("", "/", "computers").url);
109     xhtml.OpenElement("img");
110     xhtml.SetAttribute("src", "../../masthead.png");
111     xhtml.SetAttribute("alt", "Douglas Thrift's Computers Website");
112     xhtml.SetAttribute("title", "Douglas Thrift's Computers Website");
113     xhtml.CloseElement();
114     xhtml.CloseElement();
115     xhtml.CloseElement();
116     xhtml.OpenElement("p");
117     xhtml.SetAttribute("class", "center nav");
118    
119     std::vector<Section> sections;
120    
121     sections.push_back(Section("Home", "/"));
122     sections.push_back(Section("Blog", "/blog/"));
123     sections.push_back(Section("Computers", "/", "computers"));
124     sections.push_back(Section("Movies", "/", "movies"));
125     sections.push_back(Section("Music", "/", "music"));
126     sections.push_back(Section("TV Shows", "/", "tvshows"));
127     sections.push_back(Section("Sitemap", "/sitemap.xml"));
128     sections.push_back(Section("Contact", "/contact.php"));
129     sections.push_back(Section("Linking", "/linking.xml"));
130     sections.push_back(Section("Search", "/search.cgi"));
131    
132     for (std::vector<Section>::size_type index(0);
133     index < sections.size(); ++index)
134     {
135     if (index > 0) xhtml.OutputText(" | ");
136    
137     xhtml.OpenElement("a");
138     xhtml.SetAttribute("href", sections[index].url);
139    
140     if (index != 2)
141     {
142     xhtml.SetAttribute("onmouseout", "deselect("
143     + lexical_cast<ext::String>(index + 1) + ")");
144     xhtml.SetAttribute("onmouseover", "select("
145     + lexical_cast<ext::String>(index + 1) + ")");
146     xhtml.SetAttribute("class", "nav");
147     }
148     else xhtml.SetAttribute("class", "nav select");
149    
150     xhtml.OutputText(sections[index].name);
151     xhtml.CloseElement();
152     }
153    
154     xhtml.CloseElement();
155     }
156    
157     {
158     xml::ScopeElement div(xhtml, "div");
159    
160     xhtml.SetAttribute("class", "hr");
161     xhtml.OpenElement("h1");
162     xhtml.SetAttribute("id", "title");
163     xhtml.SetAttribute("class", "center");
164 Douglas Thrift 208 xhtml.OutputText("Jargon: " + jargon.word);
165 Douglas Thrift 203 xhtml.CloseElement();
166     }
167    
168     {
169     xml::ScopeElement div(xhtml, "div");
170    
171     xhtml.SetAttribute("class", "hr");
172 Douglas Thrift 208 jargon.display(pout, xhtml);
173 Douglas Thrift 203 }
174    
175     {
176     xml::ScopeElement div(xhtml, "div");
177    
178     xhtml.SetAttribute("class", "hr");
179     xhtml.OpenElement("p");
180     xhtml.SetAttribute("class", "center");
181     xhtml.OutputText("Copyright "); pout << "&copy;"; // XXX hmm?
182     xhtml.OutputText(" 2002-2004, ");
183     xhtml.OpenElement("a");
184     xhtml.SetAttribute("href", Section("", "/contact.php").url);
185     xhtml.OutputText("Douglas Thrift");
186     xhtml.CloseElement();
187     xhtml.OutputText(". All Rights Reserved.");
188     xhtml.CloseElement();
189     xhtml.OpenElement("p");
190     xhtml.SetAttribute("class", "center");
191     xhtml.OutputText("");
192    
193     pout << "<a href=\"http://validator.w3.org/check/referer\">";
194    
195     {
196     xml::ScopeElement img(xhtml, "img");
197    
198     xhtml.SetAttribute("src", "../../w3c_images/vxh10.png");
199     xhtml.SetAttribute("alt", "Valid XHTML 1.0!");
200     xhtml.SetAttribute("title", "Valid XHTML 1.0!");
201     }
202    
203     pout << "</a> <a href=\"http://jigsaw.w3.org/css-validator/check"
204     << "/referer\">";
205    
206     {
207     xml::ScopeElement img(xhtml, "img");
208    
209     xhtml.SetAttribute("src", "../../w3c_images/vcss.png");
210     xhtml.SetAttribute("alt", "Valid CSS!");
211     xhtml.SetAttribute("title", "Valid CSS!");
212     }
213    
214     pout << "</a>";
215    
216     xhtml.CloseElement();
217     }
218     }
219    
220     return pout;
221 Douglas Thrift 196 }

Properties

Name Value
svn:eol-style native
svn:keywords Id