From 6d26601f095da67c584f7a17907fd449416f37fd Mon Sep 17 00:00:00 2001 From: Laszlo Paillat Date: Thu, 16 Jun 2022 23:36:02 +0200 Subject: [PATCH] fixed string and char const field definition --- documentation/NEXT_RELEASENOTES.txt | 3 +++ .../Elements/CElement.cs | 7 +++++- .../Elements/CodeElement.cs | 7 +++++- .../Elements/ListElement.cs | 7 +++++- .../Elements/NoteElement.cs | 7 +++++- .../Elements/ParaElement.cs | 7 +++++- .../Elements/ParamRefElement.cs | 7 +++++- .../Elements/SeeElement.cs | 7 +++++- .../Elements/TypeParamRefElement.cs | 7 +++++- .../Sections/DefinitionSection.cs | 23 ++++++++++++++++++- .../DefaultDocumentation.Test/AssemblyInfo.cs | 6 +++++ .../Sections/DefinitionSectionTest.cs | 14 +++++++++++ 12 files changed, 93 insertions(+), 9 deletions(-) diff --git a/documentation/NEXT_RELEASENOTES.txt b/documentation/NEXT_RELEASENOTES.txt index e69de29b..421f4323 100644 --- a/documentation/NEXT_RELEASENOTES.txt +++ b/documentation/NEXT_RELEASENOTES.txt @@ -0,0 +1,3 @@ +## Bug fixes + +- fixed string and char const field definition \ No newline at end of file diff --git a/source/DefaultDocumentation.Markdown/Elements/CElement.cs b/source/DefaultDocumentation.Markdown/Elements/CElement.cs index 6954d76a..e7f21013 100644 --- a/source/DefaultDocumentation.Markdown/Elements/CElement.cs +++ b/source/DefaultDocumentation.Markdown/Elements/CElement.cs @@ -8,8 +8,13 @@ namespace DefaultDocumentation.Markdown.Elements /// public sealed class CElement : IElement { + /// + /// The name of this implementation used at the configuration level. + /// + public const string ConfigName = "c"; + /// - public string Name => "c"; + public string Name => ConfigName; /// public void Write(IWriter writer, XElement element) diff --git a/source/DefaultDocumentation.Markdown/Elements/CodeElement.cs b/source/DefaultDocumentation.Markdown/Elements/CodeElement.cs index ca81718c..a35ea19e 100644 --- a/source/DefaultDocumentation.Markdown/Elements/CodeElement.cs +++ b/source/DefaultDocumentation.Markdown/Elements/CodeElement.cs @@ -12,6 +12,11 @@ namespace DefaultDocumentation.Markdown.Elements /// public sealed class CodeElement : IElement { + /// + /// The name of this implementation used at the configuration level. + /// + public const string ConfigName = "code"; + private static string GetCode(ISettings settings, string source, string? region = null) { if (!Path.IsPathRooted(source) && settings.ProjectDirectory != null) @@ -39,7 +44,7 @@ private static string GetCode(ISettings settings, string source, string? region } /// - public string Name => "code"; + public string Name => ConfigName; /// public void Write(IWriter writer, XElement element) diff --git a/source/DefaultDocumentation.Markdown/Elements/ListElement.cs b/source/DefaultDocumentation.Markdown/Elements/ListElement.cs index fd2a8e87..b5340a5b 100644 --- a/source/DefaultDocumentation.Markdown/Elements/ListElement.cs +++ b/source/DefaultDocumentation.Markdown/Elements/ListElement.cs @@ -11,6 +11,11 @@ namespace DefaultDocumentation.Markdown.Elements /// public sealed class ListElement : IElement { + /// + /// The name of this implementation used at the configuration level. + /// + public const string ConfigName = "list"; + private static void WriteItem(IWriter writer, XElement element) { XElement? term = element.GetTerm(); @@ -109,7 +114,7 @@ private static void WriteTable(IWriter writer, XElement element) } /// - public string Name => "list"; + public string Name => ConfigName; /// public void Write(IWriter writer, XElement element) diff --git a/source/DefaultDocumentation.Markdown/Elements/NoteElement.cs b/source/DefaultDocumentation.Markdown/Elements/NoteElement.cs index 95f0a309..9ebe6f14 100644 --- a/source/DefaultDocumentation.Markdown/Elements/NoteElement.cs +++ b/source/DefaultDocumentation.Markdown/Elements/NoteElement.cs @@ -10,8 +10,13 @@ namespace DefaultDocumentation.Markdown.Elements /// public sealed class NoteElement : IElement { + /// + /// The name of this implementation used at the configuration level. + /// + public const string ConfigName = "note"; + /// - public string Name => "note"; + public string Name => ConfigName; /// public void Write(IWriter writer, XElement element) diff --git a/source/DefaultDocumentation.Markdown/Elements/ParaElement.cs b/source/DefaultDocumentation.Markdown/Elements/ParaElement.cs index 478f87fd..231d0d8c 100644 --- a/source/DefaultDocumentation.Markdown/Elements/ParaElement.cs +++ b/source/DefaultDocumentation.Markdown/Elements/ParaElement.cs @@ -9,8 +9,13 @@ namespace DefaultDocumentation.Markdown.Elements /// public sealed class ParaElement : IElement { + /// + /// The name of this implementation used at the configuration level. + /// + public const string ConfigName = "para"; + /// - public string Name => "para"; + public string Name => ConfigName; /// public void Write(IWriter writer, XElement element) diff --git a/source/DefaultDocumentation.Markdown/Elements/ParamRefElement.cs b/source/DefaultDocumentation.Markdown/Elements/ParamRefElement.cs index 765acabb..c07c4c17 100644 --- a/source/DefaultDocumentation.Markdown/Elements/ParamRefElement.cs +++ b/source/DefaultDocumentation.Markdown/Elements/ParamRefElement.cs @@ -11,8 +11,13 @@ namespace DefaultDocumentation.Markdown.Elements /// public sealed class ParamRefElement : IElement { + /// + /// The name of this implementation used at the configuration level. + /// + public const string ConfigName = "paramref"; + /// - public string Name => "paramref"; + public string Name => ConfigName; /// public void Write(IWriter writer, XElement element) diff --git a/source/DefaultDocumentation.Markdown/Elements/SeeElement.cs b/source/DefaultDocumentation.Markdown/Elements/SeeElement.cs index 652a0aec..fe927034 100644 --- a/source/DefaultDocumentation.Markdown/Elements/SeeElement.cs +++ b/source/DefaultDocumentation.Markdown/Elements/SeeElement.cs @@ -10,8 +10,13 @@ namespace DefaultDocumentation.Markdown.Elements /// public sealed class SeeElement : IElement { + /// + /// The name of this implementation used at the configuration level. + /// + public const string ConfigName = "see"; + /// - public string Name => "see"; + public string Name => ConfigName; /// public void Write(IWriter writer, XElement element) diff --git a/source/DefaultDocumentation.Markdown/Elements/TypeParamRefElement.cs b/source/DefaultDocumentation.Markdown/Elements/TypeParamRefElement.cs index b4343452..d1710218 100644 --- a/source/DefaultDocumentation.Markdown/Elements/TypeParamRefElement.cs +++ b/source/DefaultDocumentation.Markdown/Elements/TypeParamRefElement.cs @@ -11,8 +11,13 @@ namespace DefaultDocumentation.Markdown.Elements /// public sealed class TypeParamRefElement : IElement { + /// + /// The name of this implementation used at the configuration level. + /// + public const string ConfigName = "typeparamref"; + /// - public string Name => "typeparamref"; + public string Name => ConfigName; /// public void Write(IWriter writer, XElement element) diff --git a/source/DefaultDocumentation.Markdown/Sections/DefinitionSection.cs b/source/DefaultDocumentation.Markdown/Sections/DefinitionSection.cs index dc4cf3af..cd618424 100644 --- a/source/DefaultDocumentation.Markdown/Sections/DefinitionSection.cs +++ b/source/DefaultDocumentation.Markdown/Sections/DefinitionSection.cs @@ -185,7 +185,28 @@ static IWriter Write(IWriter writer, Action writeAction) _ = writer.GetCurrentItem() switch { - FieldDocItem item => Write(writer, w => w.Append($"{_fieldAmbience.ConvertSymbol(item.Field)}{(item.Field.IsConst ? $" = {item.Field.GetConstantValue()}" : string.Empty)};")), + FieldDocItem item => Write(writer, w => + { + w.Append(_fieldAmbience.ConvertSymbol(item.Field)); + + if (item.Field.IsConst) + { + string typeDelimiter = + item.Field.Type.IsKnownType(KnownTypeCode.String) + ? "\"" + : item.Field.Type.IsKnownType(KnownTypeCode.Char) + ? "'" + : string.Empty; + + w + .Append(" = ") + .Append(typeDelimiter) + .Append($"{item.Field.GetConstantValue()}") + .Append(typeDelimiter); + } + + w.Append(";"); + }), PropertyDocItem item => Write(writer, w => w.Append(_propertyAmbience.ConvertSymbol(item.Property))), EventDocItem item => Write(writer, w => w.Append(_eventAmbience.ConvertSymbol(item.Event))), ConstructorDocItem item => Write(writer, w => w.Append(_methodAmbience.ConvertSymbol(item.Method)).Append(";")), diff --git a/source/DefaultDocumentation.Test/AssemblyInfo.cs b/source/DefaultDocumentation.Test/AssemblyInfo.cs index d30ae4fb..baa1dd20 100644 --- a/source/DefaultDocumentation.Test/AssemblyInfo.cs +++ b/source/DefaultDocumentation.Test/AssemblyInfo.cs @@ -53,6 +53,10 @@ private static class ClassWithTypeParameter private const int _constField = 42; + private const string _constStringField = "string"; + + private const char _constCharField = 'e'; + #pragma warning disable CS0649 private static readonly int _field; #pragma warning restore CS0649 @@ -107,6 +111,8 @@ void IInterface.Method() public static readonly ClassDocItem ClassDocItem = new(NamespaceDocItem, Get($"T:{typeof(AssemblyInfo).FullName}"), null); public static readonly EventDocItem EventDocItem = new(ClassDocItem, Get($"E:{typeof(AssemblyInfo).FullName}.{nameof(Event)}"), null); public static readonly FieldDocItem ConstFieldDocItem = new(ClassDocItem, Get($"F:{typeof(AssemblyInfo).FullName}.{nameof(_constField)}"), null); + public static readonly FieldDocItem ConstStringFieldDocItem = new(ClassDocItem, Get($"F:{typeof(AssemblyInfo).FullName}.{nameof(_constStringField)}"), null); + public static readonly FieldDocItem ConstCharFieldDocItem = new(ClassDocItem, Get($"F:{typeof(AssemblyInfo).FullName}.{nameof(_constCharField)}"), null); public static readonly FieldDocItem FieldDocItem = new(ClassDocItem, Get($"F:{typeof(AssemblyInfo).FullName}.{nameof(_field)}"), null); public static readonly PropertyDocItem PropertyDocItem = new(ClassDocItem, Get($"P:{typeof(AssemblyInfo).FullName}.{nameof(Property)}"), null); public static readonly MethodDocItem MethodWithGenericConstrainsDocItem = new(ClassDocItem, Get($"M:{typeof(AssemblyInfo).FullName}.{nameof(MethodWithGenericConstrains)}``5"), null); diff --git a/source/DefaultDocumentation.Test/Markdown/Sections/DefinitionSectionTest.cs b/source/DefaultDocumentation.Test/Markdown/Sections/DefinitionSectionTest.cs index 5d8f95b8..934fa9aa 100644 --- a/source/DefaultDocumentation.Test/Markdown/Sections/DefinitionSectionTest.cs +++ b/source/DefaultDocumentation.Test/Markdown/Sections/DefinitionSectionTest.cs @@ -47,6 +47,20 @@ public void Write_should_write_When_FieldDocItem_and_constant() => Test( AssemblyInfo.ConstFieldDocItem, @"```csharp private const int _constField = 42; +```"); + + [Fact] + public void Write_should_write_When_FieldDocItem_and_constant_string() => Test( + AssemblyInfo.ConstStringFieldDocItem, +@"```csharp +private const string _constStringField = ""string""; +```"); + + [Fact] + public void Write_should_write_When_FieldDocItem_and_constant_char() => Test( + AssemblyInfo.ConstCharFieldDocItem, +@"```csharp +private const char _constCharField = 'e'; ```"); [Fact]