[JEDI.NET-commits] tools/docs/common Jedi.Docs.System.pas,1.1,1.2
Status: Pre-Alpha
Brought to you by:
jedi_mbe
From: Marcel B. <jed...@us...> - 2004-06-26 10:22:53
|
Update of /cvsroot/jedidotnet/tools/docs/common In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22001/tools/docs/common Modified Files: Jedi.Docs.System.pas Log Message: Generating assembly XML file Index: Jedi.Docs.System.pas =================================================================== RCS file: /cvsroot/jedidotnet/tools/docs/common/Jedi.Docs.System.pas,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** Jedi.Docs.System.pas 25 Jun 2004 13:10:32 -0000 1.1 --- Jedi.Docs.System.pas 26 Jun 2004 10:22:44 -0000 1.2 *************** *** 87,90 **** --- 87,92 ---- strict protected constructor Create(overview: AssemblyOverview); + class procedure AddDocFileToList(fileName: string; assemblies: HybridDictionary); static; + class procedure AddDocToAssemblyDocFile(xmlAssembly: XmlTextWriter; filename: string); static; procedure GenerateNamespaceDoc(namespaceName: string); procedure GenerateRemovedDoc; *************** *** 95,98 **** --- 97,101 ---- procedure UpdateMemberSkeleton(var index: Integer); procedure UpdateParamsSkeleton(var index: Integer); + class procedure WriteAssemblyDocFile(assemblies: HybridDictionary; assemblyName: string); static; procedure WriteHeader; procedure WriteMember(var index: Integer); *************** *** 110,113 **** --- 113,118 ---- function XmlWriter: XmlTextWriter; public + { merges namespace documentation files to form the assembly documentation files. } + class procedure GenerateAssemblyFiles; static; { generate per namespace documentation files, combining text in existing files in to the new one. } class procedure GenerateDocFiles(overview: AssemblyOverview); static; *************** *** 725,728 **** --- 730,761 ---- end; + class procedure OutputGenerator.AddDocFileToList(fileName: string; assemblies: HybridDictionary); + var + doc: XmlDocument; + asmNameNode: XmlNode; + begin + doc := XmlDocument.Create; + doc.Load(fileName); + asmNameNode := doc.SelectSingleNode('/doc/assembly/name'); + if (Assigned(asmNameNode)) and (asmNameNode.InnerText <> '') then + begin + if not assemblies.Contains(asmNameNode.InnerText) then + assemblies.Add(asmNameNode.InnerText, ArrayList.Create); + ArrayList(assemblies[asmNameNode.InnerText]).Add(fileName); + end; + end; + + class procedure OutputGenerator.AddDocToAssemblyDocFile(xmlAssembly: XmlTextWriter; filename: string); + var + xmlDoc: XmlDocument; + membersElement: XmlNode; + begin + xmlDoc := XmlDocument.Create; + xmlDoc.Load(filename); + membersElement := xmlDoc.SelectSingleNode('/doc/members'); + if Assigned(membersElement) then + membersElement.WriteContentTo(xmlAssembly); + end; + procedure OutputGenerator.GenerateNamespaceDoc(namespaceName: string); begin *************** *** 907,910 **** --- 940,965 ---- end; + class procedure OutputGenerator.WriteAssemblyDocFile(assemblies: HybridDictionary; assemblyName: string); + var + xml: XmlTextWriter; + i: Integer; + begin + xml := XmlTextWriter.Create(Configuration.AssemblyDirectory + '\' + assemblyName + '.xml', Encoding.UTF8); + xml.Formatting := Formatting.Indented; + xml.Indentation := 2; + xml.WriteStartDocument; + xml.WriteStartElement('doc'); + xml.WriteComment('generation timestamp: ' + DateTime.UtcNow.ToString('yyyy"-"MM"-"dd HH":"mm') + ' UTC'); + xml.WriteStartElement('assembly'); + xml.WriteElementString('name', assemblyName); + xml.WriteFullEndElement; + xml.WriteStartElement('members'); + for i := 0 to ArrayList(assemblies.Item[assemblyName]).Count - 1 do + AddDocToAssemblyDocFile(xml, string(ArrayList(assemblies.Item[assemblyName]).Item[i])); + xml.WriteFullEndElement; + xml.WriteFullEndElement; + xml.Close; + end; + procedure OutputGenerator.WriteHeader; begin *************** *** 1093,1096 **** --- 1148,1170 ---- end; + class procedure OutputGenerator.GenerateAssemblyFiles; + var + assemblies: HybridDictionary; + files: array of string; + enumerator: IDictionaryEnumerator; + index: Integer; + begin + // list of XML files per assembly (assembly name is the key) + assemblies := HybridDictionary.Create; + files := Directory.GetFiles(Configuration.DocumentationDirectory, '*.xml'); + &Array.Sort(files); + for index := Low(files) to High(files) do + AddDocFileToList(files[index], assemblies); + enumerator := assemblies.GetEnumerator; + if Assigned(enumerator) then + while enumerator.MoveNext do + WriteAssemblyDocFile(assemblies, string(enumerator.Key)); + end; + class procedure OutputGenerator.GenerateDocFiles(overview: AssemblyOverview); var |