ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/repos/FeepingCreaturism/Jargon.cpp
(Generate patch)

Comparing FeepingCreaturism/Jargon.cpp (file contents):
Revision 202 by Douglas Thrift, 2004-08-30T23:18:58-07:00 vs.
Revision 213 by Douglas Thrift, 2004-09-04T20:54:02-07:00

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

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines