//Filter all the CodeSnippeds by the asigned Values public void FilterCodeSnippeds() { var bc = new BrushConverter(); //Give all filter values and recieve a list with Items List <SnippetInfo> snippets = DbSnippets.GetFilteredSnippeds( SearchBox.Text, Language.SelectedItem.ToString(), Converter.StringToDateFilter(DateType.SelectedItem.ToString()), Converter.StringToTypefilter(SearchType.SelectedItem.ToString()) ); List <SnippetUI> items = new List <SnippetUI>(); for (int i = 0; i < snippets.Count; i++) { items.Add(new SnippetUI(snippets[i]._Name, DbCodeLanguage.ToString(snippets[i]._LanguageID))); } Page.Containerr.Children.Clear(); foreach (SnippetInfo i in snippets) { SnippetItem item = new SnippetItem(i, Page, this) { Width = Page.Containerr.Width }; Page.Containerr.Children.Add(item); } Page.ViewMode = false; }
public void Register(SnippetItem item) { if (_listSnippets == null) { _listSnippets = new List <SnippetItem>(); } _listSnippets.Add(item); }
/// <summary> /// The creates the configuration information or settings required by the /// target component for the build process. /// </summary> /// <param name="group"> /// A build group, <see cref="BuildGroup"/>, representing the documentation /// target for configuration. /// </param> /// <param name="writer"> /// An <see cref="XmlWriter"/> object used to create one or more new /// child nodes at the end of the list of child nodes of the current node. /// </param> /// <returns> /// Returns <see langword="true"/> for a successful configuration; /// otherwise, it returns <see langword="false"/>. /// </returns> /// <remarks> /// The <see cref="XmlWriter"/> writer passed to this configuration object /// may be passed on to other configuration objects, so do not close or /// dispose it. /// </remarks> public override bool Configure(BuildGroup group, XmlWriter writer) { BuildExceptions.NotNull(group, "group"); BuildExceptions.NotNull(writer, "writer"); if (!this.Enabled || !this.IsInitialized) { return(false); } Debug.Assert(_settings != null, "The settings object is required."); if (_settings == null || _context == null) { return(false); } BuildStyle buildStyle = _settings.Style; Debug.Assert(buildStyle != null, "The style object cannot be null (or Nothing)."); if (buildStyle == null) { return(false); } //<component type="Sandcastle.Components.ReferenceCodeComponent" assembly="$(SandAssistComponent)"> // <options mode="IndirectIris" tabSize="4" lineNumbers="true" outlining="false" storage="Sqlite" separator="..."/> // // <!--The following options are for processing codeReference tags in the // reference help. // It is a replacement of the ExampleComponent, providing better coloring, // minimum memory usage etc. // // $codeSnippets // @storage: * Indicates where the code snippets should be stored after loading // * Possible values are // - Memory: the snippets are stored in memory similar to // the ExampleComponent. // - Database: the snippets are stored in Sqlite database. // * Default: Database // @separator: * For multi-parts snippets, this defines the separator... // * Default: ...--> // // <!--<codeSnippets> // <codeSnippet source=".\CodeSnippetSample.xml" format="Sandcastle" /> // </codeSnippets>--> // <SandcastleItem name="%CodeSnippets%" /> //</component> writer.WriteStartElement("options"); //start: options writer.WriteAttributeString("mode", _highlightMode); writer.WriteAttributeString("tabSize", _tabSize.ToString()); writer.WriteAttributeString("lineNumbers", _showLineNumbers.ToString()); writer.WriteAttributeString("outlining", _showOutlining.ToString()); writer.WriteAttributeString("storage", _snippetStorage.ToString()); writer.WriteAttributeString("separator", _snippetSeparator); writer.WriteEndElement(); //end: options IList <CodeSnippetContent> listSnippets = group.SnippetContents; if (listSnippets != null && listSnippets.Count != 0) { writer.WriteStartElement("codeSnippets"); // start - codeSnippets int contentCount = listSnippets.Count; for (int i = 0; i < contentCount; i++) { CodeSnippetContent snippetContent = listSnippets[i]; if (snippetContent == null || snippetContent.IsEmpty) { continue; } writer.WriteStartElement("codeSnippet"); // start - codeSnippet writer.WriteAttributeString("source", snippetContent.ContentFile); writer.WriteAttributeString("format", "Sandcastle"); writer.WriteEndElement(); // end - codeSnippet } writer.WriteEndElement(); // end - codeSnippets } SnippetContent snippets = buildStyle.Snippets; if (snippets != null && snippets.Count != 0) { writer.WriteStartElement("codeSources"); // start - codeSources for (int i = 0; i < snippets.Count; i++) { SnippetItem snippetItem = snippets[i]; if (snippetItem == null || snippetItem.IsEmpty) { continue; } writer.WriteStartElement("codeSource"); // start - codeSource writer.WriteAttributeString("source", snippetItem.Source); writer.WriteAttributeString("format", "Sandcastle"); writer.WriteEndElement(); // end - codeSource } // The excludedUnits is required by the SnippetComponent, // we maintain that... writer.WriteStartElement("excludedUnits"); // start - excludedUnits IList <string> excludedUnits = snippets.ExcludedUnitFolders; if (excludedUnits != null && excludedUnits.Count != 0) { for (int i = 0; i < excludedUnits.Count; i++) { string unitFolder = excludedUnits[i]; if (String.IsNullOrEmpty(unitFolder)) { continue; } writer.WriteStartElement("unitFolder"); // start - unitFolder writer.WriteAttributeString("name", unitFolder); writer.WriteEndElement(); // end - unitFolder } } writer.WriteEndElement(); // end - excludedUnits writer.WriteStartElement("languages"); // start - languages IList <SnippetLanguage> languages = snippets.Languages; if (languages != null && languages.Count != 0) { for (int i = 0; i < languages.Count; i++) { SnippetLanguage language = languages[i]; if (!language.IsValid) { continue; } writer.WriteStartElement("language"); // start - language writer.WriteAttributeString("unit", language.Unit); writer.WriteAttributeString("languageId", language.LanguageId); writer.WriteAttributeString("extension", language.Extension); writer.WriteEndElement(); // end - language } } writer.WriteEndElement(); // end - languages writer.WriteEndElement(); // end - codeSources } return(true); }
private void ApplyMultiSnippetInfo(XPathNavigator navigator, SnippetInfo[] arrayInfo, string input) { CodeHighlightMode highlightMode = this.Mode; CodeController codeController = CodeController.GetInstance("conceptual"); if (codeController == null) { return; } IList <SnippetItem> listItems = null; int infoCount = arrayInfo.Length; Dictionary <string, List <SnippetItem> > dicLangItems = new Dictionary <string, List <SnippetItem> >(); // We group the various snippets by the languages... for (int i = 0; i < infoCount; i++) { SnippetInfo snippetInfo = arrayInfo[i]; listItems = _codeRefProvider[snippetInfo]; if (listItems != null) { int itemCount = listItems.Count; for (int j = 0; j < itemCount; j++) { SnippetItem snippet = listItems[j]; List <SnippetItem> list; if (!dicLangItems.TryGetValue(snippet.Language, out list)) { list = new List <SnippetItem>(); dicLangItems.Add(snippet.Language, list); } list.Add(snippet); } } } XmlWriter xmlWriter = navigator.InsertAfter(); xmlWriter.WriteStartElement("snippets"); xmlWriter.WriteAttributeString("reference", input); foreach (KeyValuePair <string, List <SnippetItem> > pair in dicLangItems) { listItems = pair.Value; int itemCount = listItems.Count; xmlWriter.WriteStartElement("snippet"); string codeLang = pair.Key; Highlighter highlighter = codeController.ApplyLanguage( xmlWriter, codeLang); if (highlightMode == CodeHighlightMode.None) { for (int j = 0; j < itemCount; j++) { if (j > 0) { xmlWriter.WriteString(_codeRefSeparator); } xmlWriter.WriteString(listItems[j].Text); } } else if (highlightMode == CodeHighlightMode.IndirectIris) { xmlWriter.WriteStartElement("span"); xmlWriter.WriteAttributeString("name", "SandAssist"); xmlWriter.WriteAttributeString("class", "tgtSentence"); xmlWriter.WriteString(codeLang); xmlWriter.WriteEndElement(); for (int j = 0; j < itemCount; j++) { if (j > 0) { xmlWriter.WriteString(_codeRefSeparator); } xmlWriter.WriteStartElement("span"); xmlWriter.WriteAttributeString("name", "SandAssist"); xmlWriter.WriteAttributeString("class", "srcSentence"); xmlWriter.WriteValue(codeController.Count); xmlWriter.WriteEndElement(); codeController.Register(listItems[j]); } } else { if (highlighter != null) { xmlWriter.WriteStartElement("markup"); // start - markup for (int j = 0; j < listItems.Count; j++) { if (j > 0) { xmlWriter.WriteString(_codeRefSeparator); } StringReader textReader = new StringReader(listItems[j].Text); highlighter.Highlight(textReader, xmlWriter); } xmlWriter.WriteEndElement(); // end - markup } else { for (int j = 0; j < listItems.Count; j++) { if (j > 0) { xmlWriter.WriteString(_codeRefSeparator); } xmlWriter.WriteString(listItems[j].Text); } } } xmlWriter.WriteEndElement(); } xmlWriter.WriteEndElement(); xmlWriter.Close(); navigator.DeleteSelf(); }
private void ApplySnippetInfo(XPathNavigator navigator, SnippetInfo snippetInfo, string input) { CodeHighlightMode highlightMode = this.Mode; CodeController codeController = CodeController.GetInstance("conceptual"); if (codeController == null) { return; } IList <SnippetItem> listItems = _codeRefProvider[snippetInfo]; if (listItems != null) { XmlWriter xmlWriter = navigator.InsertAfter(); xmlWriter.WriteStartElement("snippets"); // start - snippets xmlWriter.WriteAttributeString("reference", input); int itemCount = listItems.Count; for (int i = 0; i < itemCount; i++) { SnippetItem snippet = listItems[i]; xmlWriter.WriteStartElement("snippet"); // start - snippet Highlighter highlighter = codeController.ApplyLanguage( xmlWriter, snippet.Language); if (highlightMode == CodeHighlightMode.None) { xmlWriter.WriteString(snippet.Text); } else if (highlightMode == CodeHighlightMode.IndirectIris) { xmlWriter.WriteStartElement("span"); xmlWriter.WriteAttributeString("name", "SandAssist"); xmlWriter.WriteAttributeString("class", "tgtSentence"); xmlWriter.WriteString(snippet.Language); xmlWriter.WriteEndElement(); xmlWriter.WriteString(snippet.Text); } else { if (highlighter != null) { xmlWriter.WriteStartElement("markup"); // start - markup StringReader textReader = new StringReader( snippet.Text); highlighter.Highlight(textReader, xmlWriter); xmlWriter.WriteEndElement(); // end - markup } else { xmlWriter.WriteString(snippet.Text); } } xmlWriter.WriteEndElement(); // end - snippet } xmlWriter.WriteEndElement(); // end - snippets xmlWriter.Close(); navigator.DeleteSelf(); } else { base.WriteMessage(MessageLevel.Warn, String.Format( "The snippet with identifier '{0}' is was found.", snippetInfo)); } }
private void ApplyCode(XPathNavigator docNavigator) { CodeController codeController = CodeController.GetInstance("reference"); if (codeController == null || codeController.Mode != CodeHighlightMode.IndirectIris) { return; } XPathNodeIterator iterator = docNavigator.Select(_codeSelector); if (iterator == null || iterator.Count == 0) { return; } XPathNavigator navigator = null; XPathNavigator[] arrNavigator = BuildComponentUtilities.ConvertNodeIteratorToArray(iterator); int itemCount = arrNavigator.Length; for (int i = 0; i < itemCount; i++) { navigator = arrNavigator[i]; if (navigator == null) { continue; } string codeLang = navigator.Value; if (navigator.MoveToParent() && String.Equals(navigator.Name, "pre")) { XPathNavigator placeHolder = navigator.SelectSingleNode( "span[@name='SandAssist' and @class='tgtSentence']"); if (placeHolder != null) { placeHolder.DeleteSelf(); } Highlighter highlighter = codeController.ApplyLanguage( null, codeLang); XPathNodeIterator snipIterator = navigator.Select( "span[@name='SandAssist' and @class='srcSentence']"); XPathNavigator[] arrSnipNavigator = BuildComponentUtilities.ConvertNodeIteratorToArray(snipIterator); if (arrSnipNavigator == null || arrSnipNavigator.Length == 0) { string codeText = navigator.Value; if (String.IsNullOrEmpty(codeText) == false) { if (highlighter != null) { XmlWriter xmlWriter = navigator.InsertAfter(); StringReader textReader = new StringReader(codeText); highlighter.Highlight(textReader, xmlWriter); // For the two-part or indirect, we add extra line-break // since this process delete the last extra line. xmlWriter.WriteStartElement("br"); // start - br xmlWriter.WriteEndElement(); // end - br xmlWriter.Close(); navigator.DeleteSelf(); } } } else { XPathNavigator snipNavigator = null; int snipCount = arrSnipNavigator.Length; for (int j = 0; j < snipCount; j++) { snipNavigator = arrSnipNavigator[j]; if (snipNavigator == null) { continue; } int snipIndex = snipNavigator.ValueAsInt; SnippetItem item = codeController[snipIndex]; if (item == null) { this.WriteMessage(MessageLevel.Warn, "A code snippet specified could not be found. See next message for details."); snipNavigator.DeleteSelf(); continue; } string codeText = item.Text; if (String.IsNullOrEmpty(codeText) == false) { XmlWriter xmlWriter = snipNavigator.InsertAfter(); if (highlighter != null) { StringReader textReader = new StringReader(codeText); highlighter.Highlight(textReader, xmlWriter); } else { xmlWriter.WriteString(codeText); } xmlWriter.Close(); snipNavigator.DeleteSelf(); } } } } } }
private void ApplyCode(XPathNavigator docNavigator, XPathExpression codeSelector) { CodeController codeController = CodeController.GetInstance("conceptual"); if (codeController == null || codeController.Mode != CodeHighlightMode.IndirectIris) { return; } XPathNodeIterator iterator = docNavigator.Select(codeSelector); if (iterator == null || iterator.Count == 0) { return; } XPathNavigator navigator = null; XPathNavigator[] arrNavigator = BuildComponentUtilities.ConvertNodeIteratorToArray(iterator); int itemCount = arrNavigator.Length; string spanNamespace = "http://ddue.schemas.microsoft.com/authoring/2003/5"; string attrName = String.Empty; string attrClass = String.Empty; for (int i = 0; i < itemCount; i++) { navigator = arrNavigator[i]; if (navigator == null) { continue; } string codeLang = null; XPathNodeIterator nodeIterator = navigator.SelectChildren("span", spanNamespace); XPathNavigator placeHolder = null; if (nodeIterator == null || nodeIterator.Count == 0) { continue; } XPathNavigator[] arrSnipNavigator = BuildComponentUtilities.ConvertNodeIteratorToArray(nodeIterator); int nodeCount = arrSnipNavigator.Length; XPathNavigator tempHolder = arrSnipNavigator[0]; attrName = tempHolder.GetAttribute("name", String.Empty); attrClass = tempHolder.GetAttribute("class", String.Empty); if (String.Equals(attrName, "SandAssist") && String.Equals(attrClass, "tgtSentence")) { placeHolder = tempHolder; } if (placeHolder != null) { codeLang = placeHolder.Value; placeHolder.DeleteSelf(); } else { base.WriteMessage(MessageLevel.Info, "No code language found."); continue; } Highlighter highlighter = codeController.ApplyLanguage( null, codeLang); if (nodeCount == 1) { string codeText = navigator.Value; if (!String.IsNullOrEmpty(codeText)) { codeText = codeText.Trim(); XmlWriter xmlWriter = navigator.InsertAfter(); if (highlighter != null) { StringReader textReader = new StringReader(codeText); highlighter.Highlight(textReader, xmlWriter); // For the two-part or indirect, we add extra line-break // since this process delete the last extra line. xmlWriter.WriteStartElement("br"); // start - br xmlWriter.WriteEndElement(); // end - br } else { xmlWriter.WriteString(codeText); } xmlWriter.Close(); navigator.DeleteSelf(); } } else { XPathNavigator snipNavigator = null; for (int j = 1; j < nodeCount; j++) { snipNavigator = arrSnipNavigator[j]; if (snipNavigator == null) { base.WriteMessage(MessageLevel.Warn, "Null navigator!"); continue; } attrName = snipNavigator.GetAttribute("name", String.Empty); attrClass = snipNavigator.GetAttribute("class", String.Empty); if (String.Equals(attrName, "SandAssist") == false || String.Equals(attrClass, "srcSentence") == false) { base.WriteMessage(MessageLevel.Warn, attrName); base.WriteMessage(MessageLevel.Warn, attrClass); continue; } int snipIndex = snipNavigator.ValueAsInt; SnippetItem item = codeController[snipIndex]; string codeText = item.Text; if (!String.IsNullOrEmpty(codeText)) { codeText = codeText.Trim(); XmlWriter xmlWriter = snipNavigator.InsertAfter(); if (highlighter != null) { StringReader textReader = new StringReader(codeText); highlighter.Highlight(textReader, xmlWriter); } else { xmlWriter.WriteString(codeText); } xmlWriter.Close(); snipNavigator.DeleteSelf(); } } } } }
private void ApplySnippetInfo(XPathNavigator navigator, SnippetInfo snippetInfo, string input) { CodeHighlightMode highlightMode = this.Mode; CodeController codeController = CodeController.GetInstance("reference"); if (codeController == null) { return; } IList <SnippetItem> listItems = _codeRefProvider[snippetInfo]; if (listItems != null) { XmlWriter xmlWriter = navigator.InsertAfter(); int itemCount = listItems.Count; for (int i = 0; i < itemCount; i++) { SnippetItem snippet = listItems[i]; string codeLang = snippet.Language; if (highlightMode == CodeHighlightMode.None) { xmlWriter.WriteStartElement("code"); // start - code xmlWriter.WriteAttributeString("language", CodeController.GetCodeAttribute(codeLang)); xmlWriter.WriteString(snippet.Text); xmlWriter.WriteEndElement(); // end - code } else if (highlightMode == CodeHighlightMode.DirectIris) { Highlighter highlighter = codeController.ApplyLanguage( null, codeLang); codeController.BeginDirect(xmlWriter, codeLang); if (highlighter != null) { StringReader textReader = new StringReader(snippet.Text); highlighter.Highlight(textReader, xmlWriter); } else { xmlWriter.WriteString(snippet.Text); } codeController.EndDirect(xmlWriter, codeLang); } else if (highlightMode == CodeHighlightMode.IndirectIris) { xmlWriter.WriteStartElement("code"); // start - code xmlWriter.WriteAttributeString("language", CodeController.GetCodeAttribute(codeLang)); // <xsl:when test="@class='tgtSentence' or @class='srcSentence'"> xmlWriter.WriteStartElement("span"); xmlWriter.WriteAttributeString("name", "SandAssist"); xmlWriter.WriteAttributeString("class", "tgtSentence"); xmlWriter.WriteString(snippet.Language); xmlWriter.WriteEndElement(); xmlWriter.WriteString(snippet.Text); xmlWriter.WriteEndElement(); // end - code } else { Highlighter highlighter = codeController.ApplyLanguage( xmlWriter, snippet.Language); if (highlighter != null) { StringReader textReader = new StringReader( snippet.Text); highlighter.Highlight(textReader, xmlWriter); } else { xmlWriter.WriteString(snippet.Text); } } } xmlWriter.Close(); navigator.DeleteSelf(); } else { base.WriteMessage(MessageLevel.Warn, String.Format( "The snippet with identifier '{0}' is was found.", snippetInfo)); } }