ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/repos/Iffy/Cleaner.cpp
Revision: 341
Committed: 2004-12-15T00:32:00-08:00 (20 years, 6 months ago) by douglas
File size: 1614 byte(s)
Log Message:
Right!

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

Properties

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