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

# User Rev Content
1 douglas 296 // Iffy
2 Douglas Thrift 284 //
3     // Douglas Thrift
4     //
5     // $Id$
6    
7     #include "Cleaner.hpp"
8    
9 douglas 298 #include <menes-ext/stack.hpp>
10    
11 Douglas Thrift 284 void Cleaner::clean()
12     {
13 douglas 294 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 Douglas Thrift 284
34 douglas 298 ext::Stack<ext::Vector<Segment>::Iterator> opens;
35    
36     _mforeach (ext::Vector<Segment>, segment, segments) switch (segment->tag)
37 Douglas Thrift 284 {
38 douglas 298 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 Douglas Thrift 284 switch (segment->type)
54     {
55     case TEXT:
56 douglas 298 api::Cerr << "TEXT";
57 Douglas Thrift 284
58     break;
59     case TAG:
60 douglas 298 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 Douglas Thrift 284 }
78 douglas 298
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 Douglas Thrift 284 }
94    
95     return pout;
96     }

Properties

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