1 |
<hcax version="1"> |
1 |
<hcax version="1"> |
2 |
<file ID="HTML" Name="MS Word HTML (*.htm;*.html)" Wildcard="*.htm;*.html" RemoveComments="0" IgnoreUnknownTags="1" cssc="breakstyle:None" PostOptimizeHandler="WordOnPostOptimize" PreFileHandler="WordOnPreFile"> |
2 |
<file ID="HTML" Name="MS Word HTML (*.htm;*.html)" Wildcard="*.htm;*.html" RemoveComments="0" IgnoreUnknownTags="1" cssc="breakstyle:None" PostOptimizeHandler="WordOnPostOptimize" PreFileHandler="WordOnPreFile"> |
3 |
<tag Name="__default" DeleteTag="0" RemoveQuote="1" PackString="1" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="0" /> |
3 |
<tag Name="__default" DeleteTag="0" RemoveQuote="1" PackString="1" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="0" /> |
4 |
<tag Name=style DeleteTag="1" RemoveQuote="0" PackString="2" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="0" OnParseContent="RemoveStyleContent" /> |
4 |
<tag Name=style DeleteTag="1" RemoveQuote="0" PackString="2" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="0" OnParseContent="RemoveStyleContent" /> |
5 |
<tag Name=/style DeleteTag="1" RemoveQuote="0" PackString="0" Container="0" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1" /> |
5 |
<tag Name=/style DeleteTag="1" RemoveQuote="0" PackString="0" Container="0" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1" /> |
6 |
<tag Name=body DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1"> |
6 |
<tag Name=body DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1"> |
7 |
<attrs Name=link DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1" /> |
7 |
<attrs Name=link DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1" /> |
8 |
<attrs Name=vlink DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1" /> |
8 |
<attrs Name=vlink DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1" /> |
9 |
</tag> |
9 |
</tag> |
10 |
<tag Name=div DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1"> |
10 |
<tag Name=div DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1"> |
11 |
<attrs Name=class DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1" ReplaceWith="div class="Text""> |
11 |
<attrs Name=class DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1" ReplaceWith="div class="Text""> |
12 |
<attr Name=Class MatchName=0 Value=Section MatchValue=mvContains /> |
12 |
<attr Name=Class MatchName=0 Value=Section MatchValue=mvContains /> |
13 |
</attrs> |
13 |
</attrs> |
14 |
</tag> |
14 |
</tag> |
15 |
<tag Name=h1 DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1"> |
15 |
<tag Name=h1 DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1"> |
16 |
<attrs Name=style DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1" /> |
16 |
<attrs Name=style DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1" /> |
17 |
<attrs Name=align DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1" /> |
17 |
<attrs Name=align DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1" /> |
18 |
</tag> |
18 |
</tag> |
19 |
<tag Name=h2 DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1"> |
19 |
<tag Name=h2 DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1"> |
20 |
<attrs Name=style DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1" /> |
20 |
<attrs Name=style DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1" /> |
21 |
<attrs Name=align DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1" /> |
21 |
<attrs Name=align DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1" /> |
22 |
</tag> |
22 |
</tag> |
23 |
<tag Name=h3 DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1"> |
23 |
<tag Name=h3 DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1"> |
24 |
<attrs Name=style DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1" /> |
24 |
<attrs Name=style DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1" /> |
25 |
<attrs Name=align DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1" /> |
25 |
<attrs Name=align DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1" /> |
26 |
</tag> |
26 |
</tag> |
27 |
<tag Name=h4 DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1"> |
27 |
<tag Name=h4 DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1"> |
28 |
<attrs Name=style DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1" /> |
28 |
<attrs Name=style DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1" /> |
29 |
<attrs Name=align DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1" /> |
29 |
<attrs Name=align DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1" /> |
30 |
</tag> |
30 |
</tag> |
31 |
<tag Name=img DeleteTag="0" RemoveQuote="0" PackString="1" Container="0" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1"> |
31 |
<tag Name=img DeleteTag="0" RemoveQuote="0" PackString="1" Container="0" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1"> |
32 |
<attrs Name=align DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="1" Container="0" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1" /> |
32 |
<attrs Name=align DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="1" Container="0" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1" /> |
33 |
<attrs Name=hspace DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="1" Container="0" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1" /> |
33 |
<attrs Name=hspace DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="1" Container="0" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1" /> |
34 |
<attrs Name=style DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="1" Container="0" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1" /> |
34 |
<attrs Name=style DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="1" Container="0" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1" /> |
35 |
</tag> |
35 |
</tag> |
36 |
<tag Name=td DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1"> |
36 |
<tag Name=td DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1"> |
37 |
<attrs Name=width DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1" /> |
37 |
<attrs Name=width DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1" /> |
38 |
<attrs Name=valign DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1" /> |
38 |
<attrs Name=valign DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1" /> |
39 |
<attrs Name=style DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1" /> |
39 |
<attrs Name=style DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1" /> |
40 |
</tag> |
40 |
</tag> |
41 |
<tag Name=table DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1"> |
41 |
<tag Name=table DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1"> |
42 |
<attrs Name=class DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1"> |
42 |
<attrs Name=class DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1"> |
43 |
<attr Name=class MatchName=1 Value=Mso MatchValue=mvContains /> |
43 |
<attr Name=class MatchName=1 Value=Mso MatchValue=mvContains /> |
44 |
</attrs> |
44 |
</attrs> |
45 |
<attrs Name=style DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1" /> |
45 |
<attrs Name=style DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1" /> |
46 |
<attrs Name=border DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1" /> |
46 |
<attrs Name=border DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1" /> |
47 |
<attrs Name=cellspacing DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1" /> |
47 |
<attrs Name=cellspacing DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1" /> |
48 |
<attrs Name=cellpadding DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1" /> |
48 |
<attrs Name=cellpadding DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1" /> |
49 |
</tag> |
49 |
</tag> |
50 |
<tag Name=tr DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1"> |
50 |
<tag Name=tr DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1"> |
51 |
<attrs Name=style DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1" /> |
51 |
<attrs Name=style DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1" /> |
52 |
</tag> |
52 |
</tag> |
53 |
<tag Name=ul DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1"> |
53 |
<tag Name=ul DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1"> |
54 |
<attrs Name=style DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1" /> |
54 |
<attrs Name=style DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1" /> |
55 |
<attrs Name=type DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1" /> |
55 |
<attrs Name=type DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1" /> |
56 |
</tag> |
56 |
</tag> |
57 |
<tag Name=li DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1"> |
57 |
<tag Name=li DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1"> |
58 |
<attrs Name=class DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1"> |
58 |
<attrs Name=class DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1"> |
59 |
<attr Name=class MatchName=0 Value=MsoNormal MatchValue=mvEqual /> |
59 |
<attr Name=class MatchName=0 Value=MsoNormal MatchValue=mvEqual /> |
60 |
</attrs> |
60 |
</attrs> |
61 |
</tag> |
61 |
</tag> |
62 |
<tag Name=p DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1"> |
62 |
<tag Name=p DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1"> |
63 |
<attrs Name=class DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="0" ReplaceWith="p class="Subtitle"" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1"> |
63 |
<attrs Name=class DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="0" ReplaceWith="p class="Subtitle"" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1"> |
64 |
<attr MatchName=0 Value=MsoSubtitle MatchValue=mvEqual /> |
64 |
<attr MatchName=0 Value=MsoSubtitle MatchValue=mvEqual /> |
65 |
</attrs> |
65 |
</attrs> |
66 |
<attrs Name=class DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1"> |
66 |
<attrs Name=class DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1"> |
67 |
<attr Name=class MatchName=0 Value=MsoNormal MatchValue=mvEqual /> |
67 |
<attr Name=class MatchName=0 Value=MsoNormal MatchValue=mvEqual /> |
68 |
</attrs> |
68 |
</attrs> |
69 |
<attrs Name=class DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1"> |
69 |
<attrs Name=class DeleteAttr="1" DeleteTag="0" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1"> |
70 |
<attr Name=class MatchName=0 Value=MsoHeader MatchValue=mvEqual /> |
70 |
<attr Name=class MatchName=0 Value=MsoHeader MatchValue=mvEqual /> |
71 |
</attrs> |
71 |
</attrs> |
72 |
<attrs Name=style DeleteAttr="0" DeleteTag="1" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1" /> |
72 |
<attrs Name=style DeleteAttr="0" DeleteTag="1" RemoveQuote="0" PackString="0" Container="1" RemovePrecedingWhitespace="2" DeleteEmptyAttr="1" /> |
73 |
</tag> |
73 |
</tag> |
74 |
</file> |
74 |
</file> |
75 |
<script version="0">const |
75 |
<script version="0">const |
76 |
Indent = ' ';//#32#32; |
76 |
Indent = ' ';//#32#32; |
77 |
Format = True; |
77 |
Format = True; |
78 |
RemoveStyleWidth = False; |
78 |
RemoveStyleWidth = False; |
79 |
RemoveEmptyTags = True; |
79 |
RemoveEmptyTags = True; |
80 |
|
80 |
|
81 |
var |
81 |
var |
82 |
blocktags: TStringList; |
82 |
blocktags: TStringList; |
83 |
inlinetags: TStringList; |
83 |
inlinetags: TStringList; |
84 |
Level: Integer; |
84 |
Level: Integer; |
85 |
|
85 |
|
86 |
procedure Initialize; |
86 |
procedure Initialize; |
87 |
begin |
87 |
begin |
88 |
blocktags := TStringList.Create; |
88 |
blocktags := TStringList.Create; |
89 |
blocktags.Add('html'); |
89 |
blocktags.Add('html'); |
90 |
blocktags.Add('body'); |
90 |
blocktags.Add('body'); |
91 |
blocktags.Add('head'); |
91 |
blocktags.Add('head'); |
92 |
blocktags.Add('td'); |
92 |
blocktags.Add('td'); |
93 |
blocktags.Add('table'); |
93 |
blocktags.Add('table'); |
94 |
blocktags.Add('tbody'); |
94 |
blocktags.Add('tbody'); |
95 |
|
95 |
|
96 |
inlinetags := TStringList.Create; |
96 |
inlinetags := TStringList.Create; |
97 |
inlinetags.Add('a'); |
97 |
inlinetags.Add('a'); |
98 |
inlinetags.Add('b'); |
98 |
inlinetags.Add('b'); |
99 |
inlinetags.Add('i'); |
99 |
inlinetags.Add('i'); |
100 |
inlinetags.Add('img'); |
100 |
inlinetags.Add('img'); |
101 |
inlinetags.Add('span'); |
101 |
inlinetags.Add('span'); |
102 |
inlinetags.Add('sup'); |
102 |
inlinetags.Add('sup'); |
103 |
inlinetags.Add('big'); |
103 |
inlinetags.Add('big'); |
104 |
inlinetags.Add('small'); |
104 |
inlinetags.Add('small'); |
105 |
end; |
105 |
end; |
106 |
|
106 |
|
107 |
procedure Finalize; |
107 |
procedure Finalize; |
108 |
begin |
108 |
begin |
109 |
blocktags.Clear; |
109 |
blocktags.Clear; |
110 |
blocktags.Free; |
110 |
blocktags.Free; |
111 |
inlinetags.Clear; |
111 |
inlinetags.Clear; |
112 |
inlinetags.Free; |
112 |
inlinetags.Free; |
113 |
end; |
113 |
end; |
114 |
|
114 |
|
115 |
function GetIndentStr: String; |
115 |
function GetIndentStr: String; |
116 |
var |
116 |
var |
117 |
i: Integer; |
117 |
i: Integer; |
118 |
begin |
118 |
begin |
119 |
Result := ''; |
119 |
Result := ''; |
120 |
for i := 0 to Level - 1 do |
120 |
for i := 0 to Level - 1 do |
121 |
Result := Result + Indent; |
121 |
Result := Result + Indent; |
122 |
end; |
122 |
end; |
123 |
|
123 |
|
124 |
function InLineTag: Boolean; |
124 |
function InLineTag: Boolean; |
125 |
begin |
125 |
begin |
126 |
result := inlinetags.IndexOf(NodeClass.Name) >= 0; |
126 |
result := inlinetags.IndexOf(NodeClass.Name) >= 0; |
127 |
end; |
127 |
end; |
128 |
|
128 |
|
129 |
function BlockEndTag: Boolean; |
129 |
function BlockEndTag: Boolean; |
130 |
begin |
130 |
begin |
131 |
result := blocktags.IndexOf(Copy(NodeClass.Name, 2, Length(NodeClass.Name) -1)) >= 0; |
131 |
result := blocktags.IndexOf(Copy(NodeClass.Name, 2, Length(NodeClass.Name) -1)) >= 0; |
132 |
end; |
132 |
end; |
133 |
|
133 |
|
134 |
function BlockTag: Boolean; |
134 |
function BlockTag: Boolean; |
135 |
begin |
135 |
begin |
136 |
result := blocktags.IndexOf(NodeClass.Name) >= 0; |
136 |
result := blocktags.IndexOf(NodeClass.Name) >= 0; |
137 |
end; |
137 |
end; |
138 |
|
138 |
|
139 |
function EndTag: Boolean; |
139 |
function EndTag: Boolean; |
140 |
begin |
140 |
begin |
141 |
result := Copy(NodeClass.Name, 1, 1) = '/'; |
141 |
result := Copy(NodeClass.Name, 1, 1) = '/'; |
142 |
end; |
142 |
end; |
143 |
|
143 |
|
144 |
procedure GoToBeginning; |
144 |
procedure GoToBeginning; |
145 |
begin |
145 |
begin |
146 |
// go to beginning |
146 |
// go to beginning |
147 |
while NodeClass.PreviousNode do |
147 |
while NodeClass.PreviousNode do |
148 |
; |
148 |
; |
149 |
end; |
149 |
end; |
150 |
|
150 |
|
151 |
procedure NewIndentedLine; |
151 |
procedure NewIndentedLine; |
152 |
var |
152 |
var |
153 |
i: Integer; |
153 |
i: Integer; |
154 |
begin |
154 |
begin |
155 |
NodeClass.PreviousNode; |
155 |
NodeClass.PreviousNode; |
156 |
if NodeClass.NodeType = ntText then |
156 |
if NodeClass.NodeType = ntText then |
157 |
begin |
157 |
begin |
158 |
i := Length(NodeClass.Name); |
158 |
i := Length(NodeClass.Name); |
159 |
while (i > 0) and (NodeClass.Name = #32) do |
159 |
while (i > 0) and (NodeClass.Name = #32) do |
160 |
begin |
160 |
begin |
161 |
i := i - 1; |
161 |
i := i - 1; |
162 |
end; |
162 |
end; |
163 |
if (i = 0) then |
163 |
if (i = 0) then |
164 |
NodeClass.Delete |
164 |
NodeClass.Delete |
165 |
else |
165 |
else |
166 |
NodeClass.Name := Copy(NodeClass.Name, 1, i); |
166 |
NodeClass.Name := Copy(NodeClass.Name, 1, i); |
167 |
end; |
167 |
end; |
168 |
NodeClass.Add; |
168 |
NodeClass.Add; |
169 |
Nodeclass.NextNode; |
169 |
Nodeclass.NextNode; |
170 |
NodeClass.NodeType := ntCustom; |
170 |
NodeClass.NodeType := ntCustom; |
171 |
NodeClass.Name := #13#10 + GetIndentStr; |
171 |
NodeClass.Name := #13#10 + GetIndentStr; |
172 |
NodeClass.NextNode; |
172 |
NodeClass.NextNode; |
173 |
end; |
173 |
end; |
174 |
|
174 |
|
175 |
procedure DoFormat; |
175 |
procedure DoFormat; |
176 |
begin |
176 |
begin |
177 |
GoToBeginning; |
177 |
GoToBeginning; |
178 |
// new line per item |
178 |
// new line per item |
179 |
while NodeClass.NextNode do |
179 |
while NodeClass.NextNode do |
180 |
begin |
180 |
begin |
181 |
if (NodeClass.NodeType = ntTag) then |
181 |
if (NodeClass.NodeType = ntTag) then |
182 |
begin |
182 |
begin |
183 |
if EndTag then |
183 |
if EndTag then |
184 |
begin |
184 |
begin |
185 |
if BlockEndTag then |
185 |
if BlockEndTag then |
186 |
begin |
186 |
begin |
187 |
Level := Level - 1; |
187 |
Level := Level - 1; |
188 |
NewIndentedLine; |
188 |
NewIndentedLine; |
189 |
end; |
189 |
end; |
190 |
end |
190 |
end |
191 |
else |
191 |
else |
192 |
begin |
192 |
begin |
193 |
if not InLineTag then |
193 |
if not InLineTag then |
194 |
begin |
194 |
begin |
195 |
NewIndentedLine; |
195 |
NewIndentedLine; |
196 |
end; |
196 |
end; |
197 |
if BlockTag then Level := Level + 1; |
197 |
if BlockTag then Level := Level + 1; |
198 |
end; |
198 |
end; |
199 |
end; |
199 |
end; |
200 |
end; |
200 |
end; |
201 |
end; |
201 |
end; |
202 |
|
202 |
|
203 |
procedure WordOnPreFile(var S: String; var Pos: Integer); |
203 |
procedure WordOnPreFile(var S: String; var Pos: Integer); |
204 |
var |
204 |
var |
205 |
i: Integer; |
205 |
i: Integer; |
206 |
c: Integer; |
206 |
c: Integer; |
207 |
begin |
207 |
begin |
208 |
Level := 0; |
208 |
Level := 0; |
209 |
i := Length(S); |
209 |
i := Length(S); |
210 |
while i > 0 do |
210 |
while i > 0 do |
211 |
begin |
211 |
begin |
212 |
if S[i] = #$A0 then s[i] := #32 |
212 |
if S[i] = #$A0 then s[i] := #32 |
213 |
else if SameTextLi(S, '&nbsp;', i, 1, 6) then |
213 |
else if SameTextLi(S, '&nbsp;', i, 1, 6) then |
214 |
begin |
214 |
begin |
215 |
for c := i to i + 5 do |
215 |
for c := i to i + 5 do |
216 |
s[c] := ' '; |
216 |
s[c] := ' '; |
217 |
end; |
217 |
end; |
218 |
i := i - 1; |
218 |
i := i - 1; |
219 |
end; |
219 |
end; |
220 |
end; |
220 |
end; |
221 |
|
221 |
|
222 |
procedure WordOnPostOptimize; |
222 |
procedure WordOnPostOptimize; |
223 |
var |
223 |
var |
224 |
starttag, endtagname: String; |
224 |
starttag, endtagname: String; |
225 |
begin |
225 |
begin |
226 |
// remove empty paragraphs with &nbsp; |
226 |
// remove empty paragraphs with &nbsp; |
227 |
while NodeClass.NextNode do |
227 |
while NodeClass.NextNode do |
228 |
begin |
228 |
begin |
229 |
if NodeClass.NodeType = ntText then |
229 |
if NodeClass.NodeType = ntText then |
230 |
begin |
230 |
begin |
231 |
if (NodeClass.Name = '&nbsp;') or (NodeClass.Name = ' ') then |
231 |
if (NodeClass.Name = '&nbsp;') or (NodeClass.Name = ' ') then |
232 |
begin |
232 |
begin |
233 |
if NodeClass.NextNode and // check next node is an end node |
233 |
if NodeClass.NextNode and // check next node is an end node |
234 |
(NodeClass.NodeType = ntTag) and EndTag then |
234 |
(NodeClass.NodeType = ntTag) and EndTag then |
235 |
begin |
235 |
begin |
236 |
endtagname := NodeClass.Name; |
236 |
endtagname := NodeClass.Name; |
237 |
// go back find start node |
237 |
// go back find start node |
238 |
if NodeClass.PreviousNode then // text (&nbsp;) node |
238 |
if NodeClass.PreviousNode then // text (&nbsp;) node |
239 |
begin |
239 |
begin |
240 |
if NodeClass.PreviousNode then // NodeClass.NodeType = ntTag |
240 |
if NodeClass.PreviousNode then // NodeClass.NodeType = ntTag |
241 |
begin |
241 |
begin |
242 |
while NodeClass.NodeType = ntAttribute do |
242 |
while NodeClass.NodeType = ntAttribute do |
243 |
begin |
243 |
begin |
244 |
NodeClass.PreviousNode; |
244 |
NodeClass.PreviousNode; |
245 |
end; |
245 |
end; |
246 |
starttag := NodeClass.Name; |
246 |
starttag := NodeClass.Name; |
247 |
if (NodeClass.NodeType = ntTag) |
247 |
if (NodeClass.NodeType = ntTag) |
248 |
and ('/' + starttag = endtagname) then |
248 |
and ('/' + starttag = endtagname) then |
249 |
begin |
249 |
begin |
250 |
// delete start tag |
250 |
// delete start tag |
251 |
NodeClass.Delete; |
251 |
NodeClass.Delete; |
252 |
NodeClass.NextNode; |
252 |
NodeClass.NextNode; |
253 |
// delete any attributes |
253 |
// delete any attributes |
254 |
while NodeClass.NodeType = ntAttribute do |
254 |
while NodeClass.NodeType = ntAttribute do |
255 |
begin |
255 |
begin |
256 |
NodeClass.Delete; |
256 |
NodeClass.Delete; |
257 |
NodeClass.NextNode; |
257 |
NodeClass.NextNode; |
258 |
end; |
258 |
end; |
259 |
// delete text |
259 |
// delete text |
260 |
NodeClass.Delete; |
260 |
NodeClass.Delete; |
261 |
// delete end tag |
261 |
// delete end tag |
262 |
NodeClass.NextNode; |
262 |
NodeClass.NextNode; |
263 |
NodeClass.Delete; |
263 |
NodeClass.Delete; |
264 |
|
264 |
|
265 |
NodeClass.NextNode; |
265 |
NodeClass.NextNode; |
266 |
end |
266 |
end |
267 |
else |
267 |
else |
268 |
begin |
268 |
begin |
269 |
NodeClass.NextNode; // node |
269 |
NodeClass.NextNode; // node |
270 |
// attributes |
270 |
// attributes |
271 |
while NodeClass.NodeType = ntAttribute do |
271 |
while NodeClass.NodeType = ntAttribute do |
272 |
begin |
272 |
begin |
273 |
// NodeClass.Delete; // by default it goes backwards first |
273 |
// NodeClass.Delete; // by default it goes backwards first |
274 |
NodeClass.NextNode; |
274 |
NodeClass.NextNode; |
275 |
end; |
275 |
end; |
276 |
NodeClass.NextNode; // text |
276 |
NodeClass.NextNode; // text |
277 |
end; |
277 |
end; |
278 |
end |
278 |
end |
279 |
else |
279 |
else |
280 |
begin |
280 |
begin |
281 |
NodeClass.NextNode; |
281 |
NodeClass.NextNode; |
282 |
end; |
282 |
end; |
283 |
end |
283 |
end |
284 |
end; |
284 |
end; |
285 |
end; |
285 |
end; |
286 |
end; |
286 |
end; |
287 |
end; { while } |
287 |
end; { while } |
288 |
|
288 |
|
289 |
GoToBeginning; |
289 |
GoToBeginning; |
290 |
|
290 |
|
291 |
if RemoveStyleWidth then |
291 |
if RemoveStyleWidth then |
292 |
while NodeClass.NextNode do |
292 |
while NodeClass.NextNode do |
293 |
begin |
293 |
begin |
294 |
if (NodeClass.NodeType = ntAttribute) and |
294 |
if (NodeClass.NodeType = ntAttribute) and |
295 |
(SameText(NodeClass.Name, 'style') or |
295 |
(SameText(NodeClass.Name, 'style') or |
296 |
SameText(NodeClass.Name, 'width')) then |
296 |
SameText(NodeClass.Name, 'width')) then |
297 |
begin |
297 |
begin |
298 |
NodeClass.Delete; |
298 |
NodeClass.Delete; |
299 |
end; |
299 |
end; |
300 |
end; { while } |
300 |
end; { while } |
301 |
|
301 |
|
302 |
GoToBeginning; |
302 |
GoToBeginning; |
303 |
|
303 |
|
304 |
// remove empty tags |
304 |
// remove empty tags |
305 |
if RemoveEmptyTags then |
305 |
if RemoveEmptyTags then |
306 |
while NodeClass.NextNode do |
306 |
while NodeClass.NextNode do |
307 |
begin |
307 |
begin |
308 |
if NodeClass.NodeType = ntTag then |
308 |
if NodeClass.NodeType = ntTag then |
309 |
begin |
309 |
begin |
310 |
starttag := NodeClass.Name; |
310 |
starttag := NodeClass.Name; |
311 |
if NodeClass.NextNode and EndTag and (NodeClass.name = '/' + Starttag) |
311 |
if NodeClass.NextNode and EndTag and (NodeClass.name = '/' + Starttag) |
312 |
then |
312 |
then |
313 |
begin |
313 |
begin |
314 |
NodeClass.Delete; |
314 |
NodeClass.Delete; |
315 |
NodeClass.Delete; |
315 |
NodeClass.Delete; |
316 |
end; |
316 |
end; |
317 |
end; |
317 |
end; |
318 |
end; |
318 |
end; |
319 |
|
319 |
|
320 |
if Format then DoFormat; |
320 |
if Format then DoFormat; |
321 |
end; |
321 |
end; |
322 |
|
322 |
|
323 |
procedure RemoveStyleContent(S: String; var Pos: Integer); |
323 |
procedure RemoveStyleContent(S: String; var Pos: Integer); |
324 |
begin |
324 |
begin |
325 |
while Pos < Length(S) do |
325 |
while Pos < Length(S) do |
326 |
begin |
326 |
begin |
327 |
if (SameTextLi(s, '</style>', pos, 1, 8)) then |
327 |
if (SameTextLi(s, '</style>', pos, 1, 8)) then |
328 |
begin |
328 |
begin |
329 |
Break; |
329 |
Break; |
330 |
end |
330 |
end |
331 |
Pos := Pos + 1; |
331 |
Pos := Pos + 1; |
332 |
end; |
332 |
end; |
333 |
end; |
333 |
end; |
334 |
|
334 |
|
335 |
begin |
335 |
begin |
336 |
Level := 0; |
336 |
Level := 0; |
337 |
Initialize; |
337 |
Initialize; |
338 |
end.</script> |
338 |
end.</script> |
339 |
</hcax> |
339 |
</hcax> |