diff --git a/Reinforced.Typings.Tests/SpecificCases/SpecificTestCases.RemarksDocs.cs b/Reinforced.Typings.Tests/SpecificCases/SpecificTestCases.RemarksDocs.cs
new file mode 100644
index 00000000..d8b13cdd
--- /dev/null
+++ b/Reinforced.Typings.Tests/SpecificCases/SpecificTestCases.RemarksDocs.cs
@@ -0,0 +1,95 @@
+using System;
+using System.Threading.Tasks;
+using Reinforced.Typings.Fluent;
+using Xunit;
+
+namespace Reinforced.Typings.Tests.SpecificCases
+{
+ public partial class SpecificTestCases
+ {
+ ///
+ /// dummy
+ ///
+ ///
+ /// Class remark.
+ ///
+ public class SomeClassWithRemarks
+ {
+ ///
+ /// dummy
+ ///
+ ///
+ /// Ctor remark.
+ ///
+ public SomeClassWithRemarks() { }
+
+ ///
+ ///
+ /// Property remark.
+ ///
+ public string ClassProp { get; set; }
+
+ ///
+ ///
+ /// Method remark.
+ ///
+ public void Method() { }
+ }
+
+ [Fact]
+ public void RemarksParsedFromDocs()
+ {
+ const string result = @"
+module Reinforced.Typings.Tests.SpecificCases {
+ /** dummy */
+ export class SomeClassWithRemarks
+ {
+ /**
+ * @inheritdoc
+ */
+ public ClassProp: string;
+ /**
+ * @inheritdoc
+ */
+ public Method() : void { }
+ }
+}";
+ AssertConfiguration(
+ s =>
+ {
+ s.TryLookupDocumentationForAssembly(typeof(SpecificTestCases).Assembly);
+ s.ExportAsClass()
+ .WithPublicProperties()
+ .WithPublicMethods();
+ },
+ result,
+ expAction =>
+ {
+ // Currently the are just parsed into the DocumentationMember
+ // but not used in the generated typings. Hence we use the action on
+ // the ExportContext to perform the actual test.
+ // To avoid surprises like empty docs are currently only valid
+ // if there is a or tag.
+
+ var type = typeof(SomeClassWithRemarks);
+
+ var classDoc = expAction.Context.Documentation.GetDocumentationMember(type);
+ Assert.NotNull(classDoc);
+ Assert.Equal("Class remark.", classDoc.Remarks.Text);
+
+ var memberDoc = expAction.Context.Documentation.GetDocumentationMember(type.GetProperty(nameof(SomeClassWithRemarks.ClassProp)));
+ Assert.NotNull(memberDoc);
+ Assert.Equal("Property remark.", memberDoc.Remarks.Text);
+
+ var methodeDoc = expAction.Context.Documentation.GetDocumentationMember(type.GetMethod(nameof(SomeClassWithRemarks.Method)));
+ Assert.NotNull(methodeDoc);
+ Assert.Equal("Method remark.", methodeDoc.Remarks.Text);
+
+ var ctorRemark = expAction.Context.Documentation.GetDocumentationMember(type.GetConstructor(Array.Empty()));
+ Assert.NotNull(ctorRemark);
+ Assert.Equal("Ctor remark.", ctorRemark.Remarks.Text);
+ }
+ );
+ }
+ }
+}
\ No newline at end of file
diff --git a/Reinforced.Typings/Xmldoc/Model/DocumentationMemberExtensions.cs b/Reinforced.Typings/Xmldoc/Model/DocumentationMemberExtensions.cs
index c3993e1d..8ad36998 100644
--- a/Reinforced.Typings/Xmldoc/Model/DocumentationMemberExtensions.cs
+++ b/Reinforced.Typings/Xmldoc/Model/DocumentationMemberExtensions.cs
@@ -26,6 +26,11 @@ public static bool HasSummary(this DocumentationMember dm)
return dm.Summary != null && !string.IsNullOrEmpty(dm.Summary.Text);
}
+ public static bool HasRemarks(this DocumentationMember dm)
+ {
+ return dm.Remarks != null && !string.IsNullOrEmpty(dm.Remarks.Text);
+ }
+
public static bool HasParameters(this DocumentationMember dm)
{
return dm.Parameters != null && dm.Parameters.Length > 0;
diff --git a/Reinforced.Typings/Xmldoc/Model/Model.cs b/Reinforced.Typings/Xmldoc/Model/Model.cs
index e726f1f8..8cc644b3 100644
--- a/Reinforced.Typings/Xmldoc/Model/Model.cs
+++ b/Reinforced.Typings/Xmldoc/Model/Model.cs
@@ -39,6 +39,9 @@ public string Name
[XmlElement(ElementName = "summary")]
public DocumentationSummary Summary { get; set; }
+ [XmlElement(ElementName = "remarks")]
+ public DocumentationRemarks Remarks { get; set; }
+
[XmlElement(ElementName = "inheritdoc")]
public DocumentationInheritDoc InheritDoc { get; set; }
@@ -92,6 +95,21 @@ public override void ReadXml(XmlReader reader)
}
}
+ public class DocumentationRemarks : XmlIgnoreInner
+ {
+ public string Text { get; set; }
+
+ public override string ToString()
+ {
+ return Text;
+ }
+
+ public override void ReadXml(XmlReader reader)
+ {
+ Text = reader.ReadInnerXml().Trim();
+ }
+ }
+
public class DocumentationInheritDoc : XmlIgnoreInner
{
///