/// <summary> /// Write the snippet content to output files. /// </summary> /// <param name="node">code reference node</param> /// <param name="identifier">List of snippets</param> private void writeSnippetContent(XPathNavigator node, SnippetIdentifier identifier, List<Snippet> snippetList) { if (snippetList == null || snippetList.Count == 0) { WriteMessage(MessageLevel.Warn, "Empty snippet list past for node " + node.Name); return; } XmlWriter writer = node.InsertAfter(); writer.WriteStartElement("snippets"); writer.WriteAttributeString("reference", node.Value); // first write the snippets in the order their language shows up in the language map (if any) foreach (string devlang in languageList) { foreach (Snippet snippet in snippetList) { if (!(devlang == snippet.Language.LanguageId.ToLower())) continue; writer.WriteStartElement("snippet"); writer.WriteAttributeString("language", snippet.Language.LanguageId); writer.WriteString("\n"); // write the colorized or plaintext snippet text WriteSnippetText(snippet, writer); writer.WriteEndElement(); } } // now write any snippets whose language isn't in the language map foreach (Snippet snippet in snippetList) { if (languageList.Contains(snippet.Language.LanguageId.ToLower())) continue; writer.WriteStartElement("snippet"); writer.WriteAttributeString("language", snippet.Language.LanguageId); writer.WriteString("\n"); // write the colorized or plaintext snippet text WriteSnippetText(snippet, writer); writer.WriteEndElement(); } writer.WriteEndElement(); writer.Close(); }