/// <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();
}