ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/repos/SiteMapper/Page.cpp
Revision: 637
Committed: 2005-12-31T21:32:21-08:00 (19 years, 5 months ago) by douglas
File size: 1094 byte(s)
Log Message:
Use ext::RedBlackMap and ext::Vector instead of std::multimap.

File Contents

# Content
1 // Site Mapper
2 //
3 // Douglas Thrift
4 //
5 // $Id$
6
7 #include <cxx/standard.hh>
8
9 #include <api/pcre/regex.hpp>
10
11 #include "SiteMapper.hpp"
12
13 void Page::SetUrl(const cse::String &url)
14 {
15 static api::Pcre::RegEx url_(_B("^http://([^/]+)(/.*)?$"));
16
17 if (api::Pcre::RegEx::Match match = url_(url))
18 {
19 address = match[1];
20 path = !match[2].IsEmpty() ? match[2] : cse::String(_B("/"));
21 }
22 else
23 throw ext::StringException(url);
24 }
25
26 bool Page::operator==(const cse::String &thing)
27 {
28 return address == thing || path == thing || title == thing;
29 }
30
31 bool Page::operator==(const Page &page) const
32 {
33 if (address == page.address)
34 {
35 return path == page.path || title == page.title;
36 }
37
38 return false;
39 }
40
41 xml::TextWriter &operator<<(xml::TextWriter &xml, Page &page)
42 {
43 xml::ScopeElement item(xml, _B("item"));
44
45 xml.OpenElement(_B("link"));
46 xml.SetAttribute(_B("address"), page.GetUrl());
47 xml.OutputText(page.title);
48 xml.CloseElement();
49
50 if (!page.children.IsEmpty())
51 {
52 xml::ScopeElement list(xml, _B("list"));
53
54 _foreach (ext::Vector<Page>, child, page.children) xml << *child;
55 }
56
57 return xml;
58 }

Properties

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