protected override object CreateFancyDescription() { var ambience = new CSharpAmbience(); ambience.ConversionFlags = ConversionFlags.StandardConversionFlags | ConversionFlags.ShowDeclaringType; string header = ambience.ConvertSymbol(Entity); var documentation = XmlDocumentationElement.Get(Entity); ambience.ConversionFlags = ConversionFlags.ShowTypeParameterList; var b = new CSharpDocumentationBuilder(ambience); b.AddCodeBlock(header, keepLargeMargin: true); if (documentation != null) { foreach (var child in documentation.Children) { b.AddDocumentationElement(child); } } var flowDocument = b.CreateFlowDocument(); flowDocument.PagePadding = new Thickness(0); // default is NOT Thickness(0), but Thickness(Auto), which adds unnecessary space return(new FlowDocumentScrollViewer { Document = flowDocument, VerticalScrollBarVisibility = ScrollBarVisibility.Auto }); }
public static FlowDocument CreateTooltip(IEntity entity, bool useFullyQualifiedMemberNames = true) { var ambience = AmbienceService.GetCurrentAmbience(); ambience.ConversionFlags = ConversionFlags.StandardConversionFlags | ConversionFlags.ShowDeclaringType; if (useFullyQualifiedMemberNames) { ambience.ConversionFlags |= ConversionFlags.UseFullyQualifiedEntityNames; } string header = ambience.ConvertSymbol(entity); var documentation = XmlDocumentationElement.Get(entity); ambience.ConversionFlags = ConversionFlags.ShowTypeParameterList; DocumentationUIBuilder b = new DocumentationUIBuilder(ambience); b.AddCodeBlock(header, keepLargeMargin: true); if (documentation != null) { foreach (var child in documentation.Children) { b.AddDocumentationElement(child); } } return(b.CreateFlowDocument()); }
public void CDATAInDocumentation() { Init(@"using System; /// <summary>before<![CDATA[<xml/>]]>after</summary> class Test { } "); var element = XmlDocumentationElement.Get(typeDefinition); Assert.AreEqual(1, element.Children.Count()); Assert.AreEqual("summary", element.Children[0].Name); Assert.AreEqual("before<xml/>after", element.Children[0].TextContent); }
protected override CodeAction GetAction(RefactoringContext context, ThrowStatement node) { var entity = node.GetParent <EntityDeclaration> (); if (entity == null) { return(null); } var rr = context.Resolve(entity) as MemberResolveResult; if (rr == null || rr.IsError) { return(null); } var expr = context.Resolve(node.Expression); if (expr == null || expr.IsError || expr.Type.GetDefinition() == null) { return(null); } var docElement = XmlDocumentationElement.Get(rr.Member); if (docElement == null || docElement.Children.Count == 0) { return(null); } foreach (var de in docElement.Children) { if (de.Name == "exception") { if (de.ReferencedEntity == expr.Type) { return(null); } } } return(new CodeAction( context.TranslateString("Add exception to xml documentation"), script => { var startText = string.Format(" <exception cref=\"{0}\">", expr.Type.GetDefinition().GetIdString()); var comment = new Comment(startText + "</exception>", CommentType.Documentation); script.InsertBefore( SearchInsertionNode(entity.FirstChild) ?? entity, comment ); script.Select(script.GetSegment(comment).Offset + ("///" + startText).Length, 0); }, node )); }
FlowDocumentScrollViewer GenerateHeader() { var ambience = new CSharpAmbience(); ambience.ConversionFlags = ConversionFlags.StandardConversionFlags; var stringBuilder = new StringBuilder(); var formatter = new ParameterHighlightingOutputFormatter(stringBuilder, highlightedParameterIndex); ambience.ConvertSymbol(Method, formatter, FormattingOptionsFactory.CreateSharpDevelop()); var documentation = XmlDocumentationElement.Get(Method); ambience.ConversionFlags = ConversionFlags.ShowTypeParameterList; var b = new CSharpDocumentationBuilder(ambience); string parameterName = null; if (Method.Parameters.Count > highlightedParameterIndex) { parameterName = Method.Parameters[highlightedParameterIndex].Name; } b.AddSignatureBlock(stringBuilder.ToString(), formatter.parameterStartOffset, formatter.parameterLength, parameterName); var b2 = new CSharpDocumentationBuilder(ambience); b2.ParameterName = parameterName; b2.ShowAllParameters = false; if (documentation != null) { foreach (var child in documentation.Children) { b2.AddDocumentationElement(child); } } content = new FlowDocumentScrollViewer { Document = b2.CreateFlowDocument(), VerticalScrollBarVisibility = ScrollBarVisibility.Auto }; var flowDocument = b.CreateFlowDocument(); flowDocument.PagePadding = new Thickness(0); // default is NOT Thickness(0), but Thickness(Auto), which adds unnecessary space return(new FlowDocumentScrollViewer { Document = flowDocument, VerticalScrollBarVisibility = ScrollBarVisibility.Auto }); }
void GenerateHeader() { CSharpAmbience ambience = new CSharpAmbience(); ambience.ConversionFlags = ConversionFlags.StandardConversionFlags; var stringBuilder = new StringBuilder(); TokenWriter formatter = new ParameterHighlightingOutputFormatter(stringBuilder, highlightedParameterIndex); ambience.ConvertSymbol(Method, formatter, FormattingOptionsFactory.CreateSharpDevelop()); var documentation = XmlDocumentationElement.Get(Method); ambience.ConversionFlags = ConversionFlags.ShowTypeParameterList; var inlineBuilder = new HighlightedInlineBuilder(stringBuilder.ToString()); header.Inlines.Clear(); header.Inlines.AddRange(inlineBuilder.CreateRuns()); }
public void InheritedDocumentation() { Init(@"using System; class Derived : Base { /// <summary>Overridden summary</summary><inheritdoc/> public override void Method(); } class Base { /// <summary>Base summary</summary><remarks>Base remarks</remarks> public virtual void Method(); } "); var element = XmlDocumentationElement.Get(typeDefinition.Methods.Single(m => m.Name == "Method")); Assert.AreEqual(2, element.Children.Count()); Assert.AreEqual("summary", element.Children[0].Name); Assert.AreEqual("remarks", element.Children[1].Name); Assert.AreEqual("Overridden summary", element.Children[0].TextContent); Assert.AreEqual("Base remarks", element.Children[1].TextContent); }
public SDLanguageItemCollection <SDDocumentation> ParseDocumentation(IEntity entity) { var docDic = new SDLanguageItemCollection <SDDocumentation>(); try { if (entity != null) { var xmlDoc = XmlDocumentationElement.Get(entity); if (xmlDoc != null) { foreach (XmlDocumentationElement child in xmlDoc.Children) { if (CultureInfo.GetCultures(CultureTypes.NeutralCultures).Any(c => c.TwoLetterISOLanguageName == child.Name.ToLower()) || child.Name.ToLower() == "default") { // TODO //_sdRepository.AddDocumentationLanguage(child.Name.ToLower()); var languageDoc = ParseDocumentation(child.Children); docDic.Add(child.Name.ToLower(), languageDoc); } } //Es wurde keine Sprachunterstützung in der Doku genutzt. //Deswegen wird die Doku einfach als "default" geladen. if (docDic.Count == 0) { var defaultDoc = ParseDocumentation(xmlDoc.Children); docDic.Add("default", defaultDoc); } } } } catch (NullReferenceException ex) { Trace.TraceError(ex.ToString()); } return(docDic); }