/// <summary> /// Extracts code snippets from given folder and stores it in given container. /// </summary> /// <param name="dir">Path to the directory with code snippets.</param> /// <param name="container">Container to store snippets in.</param> private static void Extract(string dir, CodeSnippetsContainer container) { XmlSerializer snippetSer = SerializersManager.GetSerializer(typeof(CodeSnippet)); string[] files = Directory.GetFiles(dir, "*.snippet"); foreach (string snippetFileName in files) { XmlReader reader = new XmlTextReader(snippetFileName); reader.MoveToContent(); reader.Read(); // Read "CodeSnippets" element. reader.MoveToContent(); while (reader.Name == "CodeSnippet") { CodeSnippet snippet = ( CodeSnippet )snippetSer.Deserialize(reader); container.AddSnippet(snippet); } } string[] dirs = Directory.GetDirectories(dir); foreach (string dirName in dirs) { CodeSnippetsContainer newContainer = new CodeSnippetsContainer(); int lastSlash = dirName.LastIndexOf(@"\"); newContainer.Name = dirName.Substring(lastSlash + 1); Extract(dirName, newContainer); container.AddContainer(newContainer); } }
/// <summary> /// Extracts code snippets from given folder and serializes it to Xml file. /// </summary> /// <param name="dir">Path to directory with code snippets.</param> /// <param name="destXml">Rath to the Xml file to write code snippets to.</param> public static void Extract(string dir, string destXml) { XmlTextWriter writer = new XmlTextWriter(destXml, Encoding.Default); writer.Formatting = Formatting.Indented; CodeSnippetsContainer container = Extract(dir); XmlSerializer containerSer = SerializersManager.GetSerializer(typeof(CodeSnippetsContainer)); containerSer.Serialize(writer, container); writer.Close(); }