annotate Tools/DocGen/Generator.cs @ 4:f757da6161a1

!bug 100 + 2h fixed gregression
author cin
date Sun, 24 Aug 2014 17:57:42 +0400
parents f990fcb411a9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1 using System;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2 using System.Collections.Generic;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3 using System.Globalization;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4 using System.IO;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5 using System.Linq;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6 using System.Text.RegularExpressions;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7 using System.Xml;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9 using Rsdn.Framework.Formatting;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
10
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
11 namespace DocGen
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
12 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
13 delegate FileAction FileActionHandler(string ext);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
14
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
15 partial class Generator
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
16 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
17 string _sourcePath;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
18 string _destFolder;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
19 FileActionHandler _fileAction;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
20
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
21 public void Generate(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
22 FileItem createdFiles,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
23 string templateFileName,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
24 string[] path,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
25 string destFolder,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
26 string sourcePath,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
27 bool cleanUp,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
28 bool createIndex,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
29 FileActionHandler fileAction)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
30 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
31 _sourcePath = Path.GetFullPath(sourcePath);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
32 _destFolder = Path.GetFullPath(destFolder);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
33 _fileAction = fileAction;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
34
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
35 if (cleanUp)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
36 CleanUp();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
37
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
38 CreateDestFolder();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
39
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
40 var template = File.ReadAllText(templateFileName);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
41
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
42 GenerateContent(createdFiles, template, path, createIndex);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
43 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
44
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
45 private void CreateDestFolder()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
46 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
47 if (Directory.Exists(_destFolder) == false)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
48 Directory.CreateDirectory(_destFolder);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
49 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
50
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
51 private void CleanUp()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
52 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
53 if (Directory.Exists(_destFolder) == false)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
54 return;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
55
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
56 Action<string> clean = null; clean = delegate(string path)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
57 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
58 foreach (var file in Directory.GetFiles(path))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
59 if (Path.GetExtension(file).ToLower() != ".zip")
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
60 try { File.Delete(file); } catch {}
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
61
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
62 foreach (var dir in Directory.GetDirectories(path))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
63 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
64 clean(dir);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
65 try { Directory.Delete(dir); } catch {}
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
66 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
67 };
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
68
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
69 clean(_destFolder);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
70 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
71
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
72 static readonly Regex ct_item1 = new Regex(@"<ct_item\s*link\=(?<link>.*?)\s*label=['""](?<label>.*?)['""]\s*/>");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
73 static readonly Regex ct_item2 = new Regex(@"<ct_item\s*link\=(?<link>.*?)\s*label=['""](?<label>.*?)['""]\s*>(?<text>.*?)</ct_item>", RegexOptions.Singleline);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
74 static readonly Regex ct_item3 = new Regex(@"<mt_item\s*link\=(?<link>.*?)\s*label=['""](?<label>.*?)['""]\s*>(?<text>.*?)</mt_item>", RegexOptions.Singleline);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
75 static readonly Regex ct_item4 = new Regex(@"<ct_item2\s*link1\=(?<link1>.*?)\s*label1=['""](?<label1>.*?)['""]\s*link2\=(?<link2>.*?)\s*label2=['""](?<label2>.*?)['""]\s*/>", RegexOptions.Singleline);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
76 static readonly Regex ct_item5 = new Regex(@"<ct_item3\s*link1\=(?<link1>.*?)\s*label1=['""](?<label1>.*?)['""]\s*link2\=(?<link2>.*?)\s*label2=['""](?<label2>.*?)['""]\s*link3\=(?<link3>.*?)\s*label3=['""](?<label3>.*?)['""]\s*/>", RegexOptions.Singleline);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
77
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
78 private bool GenerateContent(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
79 FileItem createdFiles, string template, string[] path, bool createIndex)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
80 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
81 var folder = string.Join("/", path);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
82 var destFolder = Path.Combine(_destFolder, folder);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
83 var backPath = "";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
84
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
85 for (var i = 0; i < path.Length; i++)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
86 backPath += "../";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
87
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
88 var sourcePath = Path.Combine(_sourcePath, folder);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
89 var sourceFiles = Directory.GetFiles(sourcePath);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
90
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
91 var files = new List<string>();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
92 var folders = new List<string>();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
93
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
94 foreach (var fileName in sourceFiles)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
95 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
96 var backLinks = GeneratePath(path, backPath, fileName);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
97
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
98 var destName = Path.Combine(destFolder, Path.GetFileName(fileName));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
99 var ext = Path.GetExtension(destName).ToLower();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
100
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
101 Console.WriteLine(destName);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
102
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
103 switch (_fileAction(fileName))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
104 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
105 case FileAction.Skip:
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
106 break;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
107
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
108 case FileAction.Copy:
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
109 File.Copy(fileName, destName, true);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
110 break;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
111
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
112 case FileAction.Process:
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
113 if (Directory.Exists(destFolder) == false)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
114 Directory.CreateDirectory(destFolder);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
115
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
116 switch (ext)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
117 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
118 case ".htm":
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
119 case ".html":
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
120 using (var sw = File.CreateText(destName))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
121 using (var sr = File.OpenText(fileName))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
122 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
123 var item = new FileItem { IsFile = true, Name = destName };
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
124 createdFiles.Add(item);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
125
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
126 var source = sr.ReadToEnd();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
127
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
128 source = source
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
129 .Replace("<ct_table>", "<table border='0' cellpadding='0' cellspacing='0'>")
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
130 .Replace("<ct_hr>", "<ct_mg><tr><td colspan='5' class='hr'><img width='1' height='1' alt=''/></td></tr><ct_mg>")
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
131 .Replace("<ct_text>", "<tr><td colspan='5'>")
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
132 .Replace("</ct_text>", "</td></tr><ct_mg>")
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
133 .Replace("<ct_mg>", "<tr><td colspan='5' class='sp'><img width='1' height='1' alt=''/></td></tr>")
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
134 .Replace("</ct_table>", "</table>")
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
135 ;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
136
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
137 source = ct_item1.Replace(source, @"<tr><td nowrap colspan='5'>&#8226; <a href=${link}>${label}</a></td></tr>");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
138 source = ct_item2.Replace(source, @"<tr><td nowrap>&#8226; <a href=${link}>${label}</a></td><td>&nbsp;&nbsp;&nbsp;</td><td class='j' colspan='3'>${text}</td></tr>");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
139 source = ct_item3.Replace(source, @"<tr><td nowrap class='p'>&#8226; <a href=${link}>${label}</a></td><td></td><td class='pj' colspan='3'>${text}</td></tr>");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
140 source = ct_item4.Replace(source, @"<tr><td nowrap>&#8226; <a href=${link1}>${label1}</a></td><td>&nbsp;&nbsp;&nbsp;</td><td nowrap colspan='3'>&#8226; <a href=${link2}>${label2}</a></td></tr>");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
141 source = ct_item5.Replace(source, @"<tr><td nowrap>&#8226; <a href=${link1}>${label1}</a></td><td>&nbsp;&nbsp;&nbsp;</td><td nowrap>&#8226; <a href=${link2}>${label2}</a></td><td>&nbsp;&nbsp;&nbsp;</td><td nowrap>&#8226; <a href=${link3}>${label3}</a></td></tr>");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
142
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
143 if (_modifySourceLinks)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
144 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
145 source = source
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
146 .Replace("href=\"..\\..\\..\\Source\\", "target=_blank href=\"/Source/")
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
147 .Replace("href='..\\..\\..\\Source\\", "target=_blank href='/Source/")
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
148 .Replace("<a href=\"http://", "<a target=_blank href=\"http://")
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
149 .Replace("<a href='http://", "<a target=_blank href='http://")
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
150 ;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
151 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
152
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
153 var title = item.Title;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
154
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
155 if (title == "index")
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
156 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
157 title = Path.GetFileName(Path.GetDirectoryName(fileName));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
158
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
159 if (title != "content")
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
160 item.Title = title;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
161 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
162
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
163 source = GenerateSource(source, item);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
164 title = item.Title;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
165
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
166 if (title.Length > 0 && _addDashToTitle)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
167 title += " - ";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
168
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
169 sw.WriteLine(string.Format(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
170 template,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
171 source,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
172 backPath,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
173 backLinks,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
174 title));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
175
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
176 if (item.NoIndex == false)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
177 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
178 source = source
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
179 .Replace("<span class='a'>", "")
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
180 .Replace("</span>", "")
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
181 .Replace("&lt;", "<")
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
182 .Replace("&gt;", ">")
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
183 ;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
184
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
185 foreach (var index in IndexItem.Index)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
186 if (!item.NoIndexes.Contains(index.Name))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
187 foreach (var s in index.Text)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
188 if (source.IndexOf(s) >= 0)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
189 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
190 index.Files.Add(item);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
191 break;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
192 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
193
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
194 foreach (var s in item.Indexes)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
195 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
196 var index = IndexItem.Index.Find(i => i.Name == s);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
197
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
198 if (index == null)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
199 IndexItem.Index.Add(new IndexItem(s));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
200
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
201 if (index.Files.Contains(item) == false)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
202 index.Files.Add(item);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
203 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
204 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
205 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
206
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
207 break;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
208
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
209 case ".cs":
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
210 using (var sw = File.CreateText(destName + ".htm"))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
211 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
212 createdFiles.Add(new FileItem { IsFile = true, Name = destName + ".htm" });
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
213
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
214 var source = GenerateSource("<% " + fileName + " %>", null);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
215
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
216 sw.WriteLine(string.Format(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
217 template,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
218 source,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
219 backPath,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
220 backLinks,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
221 Path.GetFileNameWithoutExtension(fileName) + " - "));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
222 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
223 break;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
224 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
225
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
226 files.Add(fileName);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
227
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
228 break;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
229 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
230 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
231
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
232 var dirs = Directory.GetDirectories(sourcePath);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
233 var newPath = new string[path.Length + 1];
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
234
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
235 path.CopyTo(newPath, 0);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
236
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
237 foreach (var dir in dirs)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
238 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
239 var dirList = dir.Split('/', '\\');
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
240 var dirName = dirList[dirList.Length - 1];
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
241
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
242 // Skip Subversion folders.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
243 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
244 if (dirName == "_svn" || dirName == ".svn")
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
245 continue;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
246
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
247 newPath[path.Length] = dirName;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
248
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
249 var item = new FileItem { IsFile = false, Name = dirName};
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
250
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
251 createdFiles.Add(item);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
252
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
253 if (GenerateContent(item, template, newPath, createIndex))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
254 folders.Add(dir);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
255 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
256
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
257 if (files.Count > 0 || folders.Count > 0)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
258 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
259 var indexName = destFolder + "/index.htm";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
260
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
261 if (createIndex && File.Exists(indexName) == false)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
262 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
263 var str = "";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
264
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
265 folders.Sort();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
266
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
267 foreach (var s in folders)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
268 str += string.Format("&#8226; <a href='{0}/index.htm'>{0}</a><br>\n",
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
269 Path.GetFileName(s));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
270
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
271 if (str.Length > 0)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
272 str += "<br>";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
273
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
274 files.Sort();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
275
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
276 foreach (var s in files)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
277 str += string.Format(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
278 s.EndsWith(".htm", true, CultureInfo.CurrentCulture) ||
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
279 s.EndsWith(".html", true, CultureInfo.CurrentCulture)?
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
280 "&#8226; <a href='{0}'>{0}</a><br>":
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
281 "&#8226; <a href='{0}.htm'>{0}</a><br>\n",
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
282 Path.GetFileName(s));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
283
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
284 _fileAction(indexName);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
285
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
286 using (var sw = File.CreateText(indexName))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
287 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
288 createdFiles.Add(new FileItem { IsFile = true, Name = indexName });
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
289
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
290 sw.WriteLine(string.Format(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
291 template,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
292 str,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
293 backPath,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
294 GeneratePath(path, backPath, "@@@").Replace(".@@@", ""),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
295 Path.GetFileNameWithoutExtension(destFolder) + " - "));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
296 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
297 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
298
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
299 return true;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
300 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
301
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
302 return false;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
303 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
304
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
305 private string GenerateSource(string text, FileItem item)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
306 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
307 for (int
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
308 idx = text.IndexOf("<%"),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
309 end = text.IndexOf("%>", idx + 2);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
310 idx >= 0 &&
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
311 end >= 0;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
312 idx = text.IndexOf("<%", idx + 2),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
313 end = text.IndexOf("%>", idx + 2))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
314 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
315 var startSource = text.Substring(0, idx);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
316 var source = text.Substring(idx + 2, end - idx - 2).Trim();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
317 var command = "source";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
318
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
319 var cmdIdx = source.IndexOf('#');
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
320
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
321 if (cmdIdx >= 0)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
322 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
323 command = source.Substring(0, cmdIdx).Trim().ToLower();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
324 source = source.Substring(cmdIdx+1).Trim();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
325 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
326
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
327 switch (command)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
328 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
329 case "source" : source = GetSourceCodeFromPath(Path.Combine(_sourcePath, source), text); break;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
330 case "rss" : source = GetNews (Path.Combine(_sourcePath, source)); break;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
331 case "txt" :
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
332 case "cs" :
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
333 case "sql" : source = GetSourceCode(source, "." + command, text); break;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
334 case "title" : item.Title = source; source = ""; break;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
335 case "order" : item.SortOrder = int.Parse(source); source = ""; break;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
336 case "group" : item.Group = source; source = ""; break;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
337 case "index" : item.Indexes.Add(source); source = ""; break;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
338 case "table" : source = GetTable(Path.Combine(_sourcePath, source)); break;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
339 case "noindex" :
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
340 if (source.Length == 0)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
341 item.NoIndex = true;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
342 else
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
343 item.NoIndexes.Add(source);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
344
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
345 source = "";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
346 break;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
347
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
348 default : throw new InvalidOperationException();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
349 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
350
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
351 text = startSource + source + text.Substring(end + 2);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
352 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
353
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
354 return text
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
355 .Replace(@"Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=DBHost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=XE)));User Id=TestUser;Password=TestPassword;", "...");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
356 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
357
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
358 private static string GetNews(string sourcePath)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
359 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
360 var doc = new XmlDocument();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
361
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
362 doc.Load(sourcePath);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
363
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
364 var html = "<table border='0' cellpadding='0' cellspacing='0'>";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
365 var @class = "";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
366 var i = 0;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
367
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
368 foreach (XmlNode item in doc.SelectNodes("rss/channel/item"))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
369 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
370 html += string.Format(@"
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
371 <tr><td{0} colspan='2'><nobr><b>{1:MM/dd/yy}</nobr></b> <a href='{2}'>{3}</a></td></tr>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
372 <tr><td>&nbsp;&nbsp;</td><td class='j'>{4}</td></tr>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
373 ",
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
374 @class,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
375 DateTime.Parse(item.SelectSingleNode("pubDate").InnerText),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
376 item.SelectSingleNode("link"). InnerText,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
377 item.SelectSingleNode("title"). InnerText,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
378 item.SelectSingleNode("description").InnerText);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
379
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
380 @class = " class='p'";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
381
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
382 if (++i == 20)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
383 break;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
384 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
385
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
386 html += "</table>";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
387
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
388 return html;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
389 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
390
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
391 private static string GetSourceCode(string code, string ext, string source)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
392 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
393 switch (ext)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
394 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
395 case ".cpp": code = "[c]" + code + "[/c]"; break;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
396 case ".cs": code = "[c#]" + code + "[/c#]"; break;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
397 case ".vb": code = "[vb]" + code + "[/vb]"; break;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
398 case ".xml":
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
399 case ".config": code = "[xml]" + code + "[/xml]"; break;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
400 case ".sql": code = "[sql]" + code + "[/sql]"; break;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
401 default : code = "[code]" + code + "[/code]"; break;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
402 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
403
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
404 code = code
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
405 .Replace("/*[", "[")
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
406 .Replace("]*/", "]")
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
407 ;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
408
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
409 code = new TextFormatter().Format(code, false);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
410
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
411 if (source.IndexOf("<a name='Person'></a>") >= 0)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
412 code = code
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
413 .Replace("&lt;Person&gt;", "&lt;<a class=m href=#Person>Person</a>&gt;")
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
414 .Replace(", Person&gt;", ", <a class=m href=#Person>Person</a>&gt;")
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
415 .Replace(" Person ", " <a class='m' href=#Person>Person</a> ")
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
416 .Replace(" Person()", " <a class='m' href=#Person>Person</a>()")
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
417 .Replace("(Person ", "(<a class='m' href=#Person>Person</a> ")
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
418 ;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
419
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
420 return code
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
421 .Replace("\n", "\r\n")
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
422 .Replace("\r\r\n", "\r\n")
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
423 .Replace("<table width='96%'>", "<table width='100%' class='code'>")
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
424 .Replace("<pre>", "<pre class='code'>")
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
425 .Replace("[a]", "<span class='a'>")
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
426 .Replace("[/a]", "</span>")
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
427 .Replace("[link]", "<a ")
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
428 .Replace("[/link]", "</a>")
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
429 .Replace("[file]", "href='/Source/")
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
430 .Replace("[/file]", ".htm'>")
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
431 .Replace("&lt;!--", "<span class='com'>&lt;!--")
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
432 .Replace("--&gt;", "--&gt;</span>")
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
433 ;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
434 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
435
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
436 private static string GetSourceCodeFromPath(string sourcePath, string source)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
437 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
438 var code = "";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
439
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
440 using (var sr = File.OpenText(sourcePath))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
441 for (var s = sr.ReadLine(); s != null; s = sr.ReadLine())
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
442 if (!s.StartsWith("//@") && !s.StartsWith("''@"))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
443 code += s + "\n";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
444
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
445 return GetSourceCode(code, Path.GetExtension(sourcePath).ToLower(), source);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
446 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
447
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
448 private static string GeneratePath(string[] path, string backPath, string fileName)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
449 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
450 if (path.Length == 0)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
451 return "";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
452
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
453 var backLinks = "";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
454 var parent = "";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
455 var name = Path.GetFileNameWithoutExtension(fileName);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
456
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
457 switch (path[0])
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
458 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
459 case "Doc":
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
460 backLinks += string.Format(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
461 "<br><nobr>&nbsp;&nbsp;<small><a class='m' href='{0}Doc/index.htm'>Doc</a>",
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
462 backPath);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
463
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
464 for (var i = 1; i < path.Length; i++)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
465 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
466 parent = "";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
467
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
468 for (var j = i + 1; j < path.Length; j++)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
469 parent += "../";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
470
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
471 backLinks += string.Format(".<a class='m' href='{0}index.htm'>{1}</a>", parent, path[i]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
472 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
473
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
474 if (name.ToLower() != "index")
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
475 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
476 backLinks += string.Format(".<a class='m' href='{0}{1}'>{2}</a>",
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
477 parent, Path.GetFileName(fileName), name);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
478 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
479
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
480 backLinks += "<small></nobr></br>";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
481
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
482 break;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
483
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
484 case "Source":
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
485 backLinks += string.Format(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
486 "<br><nobr>&nbsp;&nbsp;<small><a class='m' href='{0}Source/index.htm'>Source</a>",
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
487 backPath);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
488
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
489 for (var i = 1; i < path.Length; i++)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
490 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
491 parent = "";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
492
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
493 for (var j = i + 1; j < path.Length; j++)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
494 parent += "../";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
495
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
496 backLinks += string.Format(".<a class='m' href='{0}index.htm'>{1}</a>", parent, path[i]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
497 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
498
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
499 if (name.ToLower() != "@@@")
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
500 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
501 backLinks += string.Format(".<a class='m' href='{0}{1}.htm'>{1}</a>",
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
502 parent, Path.GetFileName(fileName));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
503 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
504
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
505 backLinks += "<small></nobr></br>";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
506
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
507 break;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
508 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
509
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
510 return backLinks;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
511 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
512
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
513 class TableItem
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
514 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
515 public string Provider;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
516 public string Feature;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
517 public string Linq;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
518 public string Implementation;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
519 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
520
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
521 static string _providerName;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
522
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
523 static TableItem GetTableItem(string line)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
524 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
525 if (line.StartsWith("*"))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
526 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
527 _providerName = line.Substring(1).Trim();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
528 return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
529 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
530
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
531 var ss = line.Replace("||", "$$$$$").Split('|');
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
532
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
533 if (ss.Length != 4)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
534 throw new InvalidOperationException(line);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
535
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
536 var impl = ss[3].Trim().Replace("$$$$$", "||");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
537
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
538 if (impl.StartsWith("#"))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
539 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
540 impl = impl.Substring(impl.IndexOf(' ')).Replace("\\n", "\n").Replace("\\t", "\t").Trim();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
541 impl = GetSourceCode(impl, ".sql", "");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
542 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
543
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
544 return new TableItem
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
545 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
546 Provider = _providerName,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
547 Feature = ss[1].Trim().Replace("$$$$$", "||"),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
548 Linq = ss[2].Trim().Replace("$$$$$", "||"),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
549 Implementation = impl
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
550 };
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
551 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
552
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
553 static string GetTable(string sourcePath)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
554 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
555 Console.WriteLine("table {0}", sourcePath);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
556
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
557 var lines = File.ReadAllLines(sourcePath);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
558 var items = (from l in lines where l.Trim().Length > 0 select GetTableItem(l)).Where(i => i != null).ToList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
559 var providers = (from i in items where i.Provider.Length > 0 group i by i.Provider into g select g.Key).ToList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
560 var forall = (from i in items where i.Provider.Length == 0 select i).ToList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
561
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
562 foreach (var p in providers)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
563 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
564 items.AddRange(from a in forall select new TableItem
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
565 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
566 Provider = p,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
567 Feature = a.Feature,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
568 Linq = a.Linq,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
569 Implementation = a.Implementation
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
570 });
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
571 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
572
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
573 foreach (var i in forall)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
574 items.Remove(i);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
575
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
576 var features = (
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
577 from i in items
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
578 group i by new { i.Feature, i.Linq } into g
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
579 orderby g.Key.Feature, g.Key.Linq
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
580 select new
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
581 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
582 g.Key.Feature,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
583 g.Key.Linq,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
584 Providers = new string[providers.Count()]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
585 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
586 ).ToList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
587
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
588 foreach (var f in features)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
589 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
590 for (var i = 0; i < providers.Count; i++)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
591 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
592 f.Providers[i] = (
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
593 from it in items
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
594 where it.Provider == providers[i] && it.Feature == f.Feature && it.Linq == f.Linq
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
595 select it.Implementation
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
596 ).FirstOrDefault();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
597 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
598 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
599
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
600 var s = "<table class='data bordered nowrappable'>\n<tr><th>&nbsp;</th><th>Linq</th>";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
601
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
602 foreach (var p in providers)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
603 s += "<th>" + p + "</th>";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
604
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
605 s += "</tr>";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
606
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
607 var byFeature = from f in features group f by f.Feature;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
608
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
609 foreach (var f in byFeature)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
610 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
611 bool first = true;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
612
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
613 foreach (var l in f)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
614 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
615 s += "<tr>";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
616
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
617 if (first)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
618 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
619 s += f.Count() == 1? "<td>": "<td rowspan=" + f.Count() + ">";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
620 s += f.Key + "</td>";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
621 first = false;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
622 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
623
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
624 s += "<td>" + l.Linq + "</td>";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
625
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
626 var n = 0;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
627 string p = null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
628
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
629 for (var i = 0; i < l.Providers.Count(); i++)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
630 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
631 if (l.Providers[i] == p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
632 n++;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
633 else
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
634 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
635 if (n > 0)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
636 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
637 s += n == 1? "<td": "<td colspan=" + n;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
638 s += p == null ? " class=nosup>" : ">";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
639 s += p ?? "X";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
640 s += "</td>";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
641 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
642
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
643 p = l.Providers[i];
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
644 n = 1;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
645 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
646 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
647
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
648 if (n > 0)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
649 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
650 s += n == 1? "<td": "<td colspan=" + n;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
651 s += p == null ? " class=nosup>" : ">";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
652 s += p ?? "X";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
653 s += "</td>";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
654 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
655
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
656 s += "</tr>\n";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
657 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
658 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
659
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
660 return s + "</table>";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
661 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
662 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
663 }