ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/repos/FeepingCreaturism/Jargon.cpp
Revision: 203
Committed: 2004-09-01T02:10:19-07:00 (20 years, 9 months ago) by Douglas Thrift
File size: 5484 byte(s)
Log Message:
What now?

File Contents

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

Properties

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