ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/repos/SiteMapper/Page.cpp
Revision: 423
Committed: 2005-03-09T19:23:17-08:00 (20 years, 3 months ago) by douglas
File size: 1209 byte(s)
Log Message:
More Menes stuff needs doing, mostly _forish stuff this time.

File Contents

# Content
1 // Site Mapper
2 //
3 // Douglas Thrift
4 //
5 // $Id$
6
7 #include "SiteMapper.hpp"
8 #include "Matcher/Matcher.hpp"
9
10 void Page::setUrl(const ext::String& url)
11 {
12 Matcher matcher("^http://(.+)(/.*)?$", (PCRE_UNGREEDY | PCRE_DOTALL));
13
14 if (url == matcher)
15 {
16 address = matcher[1];
17
18 if (matcher.size() > 2) path = matcher[2]; else path = "/";
19 }
20 else
21 {
22 api::Cerr << SiteMapper::program << ": Page.setUrl(" << url << ") failure.\n";
23
24 throw;
25 }
26 }
27
28 bool Page::operator==(const ext::String& thing)
29 {
30 return address == thing || path == thing || title == thing;
31 }
32
33 bool Page::operator==(Matcher& matcher)
34 {
35 return address == matcher || path == matcher || title == matcher;
36 }
37
38 bool Page::operator==(const Page& page) const
39 {
40 if (address == page.address)
41 {
42 return path == page.path || title == page.title;
43 }
44
45 return false;
46 }
47
48 xml::TextWriter& operator<<(xml::TextWriter& xml, Page& page)
49 {
50 xml::ScopeElement item(xml, "item");
51
52 xml.OpenElement("link");
53 xml.SetAttribute("address", page.getUrl());
54 xml.OutputText(page.title);
55 xml.CloseElement();
56
57 if (!page.children.IsEmpty())
58 {
59 xml::ScopeElement list(xml, "list");
60
61 _foreach (ext::Vector<Page>, child, page.children) xml << *child;
62 }
63
64 return xml;
65 }

Properties

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