ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/repos/Iffy/Cleaner.cpp
Revision: 298
Committed: 2004-12-11T23:10:30-08:00 (20 years, 6 months ago) by douglas
File size: 1580 byte(s)
Log Message:
Working right along.

File Contents

# Content
1 // Iffy
2 //
3 // Douglas Thrift
4 //
5 // $Id$
6
7 #include "Cleaner.hpp"
8
9 #include <menes-ext/stack.hpp>
10
11 void Cleaner::clean()
12 {
13 if (segments.First().type != TAG || segments.First().tag != "html")
14 {
15 Tag tag(OPEN, "html");
16
17 segments.InsertFirst(tag);
18 }
19
20 if (segments.Last().type == TEXT)
21 {
22 std::string segment(segments.Last().text);
23
24 if (segment.find_first_not_of("\r\n") == std::string::npos) segments.RemoveLast();
25 }
26
27 if (segments.Last().type != TAG || segments.Last().tag != "html")
28 {
29 Tag tag(CLOSE, "html");
30
31 segments.InsertLast(tag);
32 }
33
34 ext::Stack<ext::Vector<Segment>::Iterator> opens;
35
36 _mforeach (ext::Vector<Segment>, segment, segments) switch (segment->tag)
37 {
38 case OPEN:
39 opens.Push(segment);
40 case STANDALONE:
41 break;
42 case CLOSE:
43 if (segment->tag != ext::String(opens.Top()->tag))
44 {
45 // XXX: do stuff
46 }
47
48 opens.Pop();
49 }
50
51 /* _foreach (ext::Vector<Segment>, segment, segments)
52 {
53 switch (segment->type)
54 {
55 case TEXT:
56 api::Cerr << "TEXT";
57
58 break;
59 case TAG:
60 api::Cerr << "TAG ";
61
62 switch (segment->tag)
63 {
64 case OPEN:
65 api::Cerr << "OPEN\t";
66
67 break;
68 case CLOSE:
69 api::Cerr << "CLOSE\t";
70
71 break;
72 case STANDALONE:
73 api::Cerr << "STANDALONE\t";
74 }
75
76 api::Cerr << ext::String(segment->tag);
77 }
78
79 api::Cerr << ios::NewLine;
80 }*/
81 }
82
83 ios::PrintWriter& operator<<(ios::PrintWriter& pout, const Cleaner& cleaner)
84 {
85 _foreach (ext::Vector<Segment>, segment, cleaner.segments) switch (segment->type)
86 {
87 case TEXT:
88 pout << segment->text;
89
90 break;
91 case TAG:
92 pout << segment->tag;
93 }
94
95 return pout;
96 }

Properties

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