Skip to content

Commit a97d832

Browse files
authored
Added attribute formatter for C++ WINRT (#507)
1 parent f7b6448 commit a97d832

File tree

34 files changed

+110
-4
lines changed

34 files changed

+110
-4
lines changed

mdoc/Mono.Documentation/Updater/Formatters/AttributeFormatters/AttributeFormatter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ protected virtual string MakeNamedArgumentString(string name, string value)
119119
return $"{name}={value}";
120120
}
121121

122-
public static string MakeAttributesValueString(object v, TypeReference valueType)
122+
public virtual string MakeAttributesValueString(object v, TypeReference valueType)
123123
{
124124
var formatters = new[] {
125125
new AttributeValueFormatter (),
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
using Mono.Cecil;
2+
3+
namespace Mono.Documentation.Updater.Formatters
4+
{
5+
class CppWinRtAttributeFormatter : AttributeFormatter
6+
{
7+
public override string PrefixBrackets { get; } = "/// [";
8+
public override string SurfixBrackets { get; } = "]";
9+
public override string Language => Consts.CppWinRt;
10+
11+
public override string MakeAttributesValueString(object v, TypeReference valueType)
12+
{
13+
string baseValue = base.MakeAttributesValueString(v, valueType);
14+
return baseValue.StartsWith("typeof(") ? baseValue.Substring(7, baseValue.Length - 8) : baseValue;
15+
}
16+
}
17+
}

mdoc/Mono.Documentation/Updater/Formatters/CSharpFullMemberFormatter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -547,7 +547,7 @@ private StringBuilder AppendParameter (StringBuilder buf, ParameterDefinition pa
547547
buf.Append (parameter.Name);
548548
if (parameter.HasDefault && parameter.IsOptional && parameter.HasConstant)
549549
{
550-
var ReturnVal = AttributeFormatter.MakeAttributesValueString(parameter.Constant, parameter.ParameterType);
550+
var ReturnVal = new AttributeFormatter().MakeAttributesValueString(parameter.Constant, parameter.ParameterType);
551551
buf.AppendFormat (" = {0}", ReturnVal == "null" ? "default" : ReturnVal);
552552
}
553553
return buf;

mdoc/Mono.Documentation/Updater/Formatters/CppFormatters/CppWinRtFullMemberFormatter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ protected override StringBuilder AppendParameter(StringBuilder buf, ParameterDef
103103

104104
if (parameter.HasDefault && parameter.IsOptional && parameter.HasConstant)
105105
{
106-
buf.AppendFormat(" = {0}", AttributeFormatter.MakeAttributesValueString(parameter.Constant, parameter.ParameterType));
106+
buf.AppendFormat(" = {0}", new AttributeFormatter().MakeAttributesValueString(parameter.Constant, parameter.ParameterType));
107107
}
108108

109109
return buf;

mdoc/Mono.Documentation/Updater/Formatters/FormatterManager.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ public static void AddFormatter(string langId)
5151
case Consts.CppWinRtLowCase:
5252
TypeFormatters.Add(new CppWinRtMemberFormatter(map));
5353
MemberFormatters.Add(new CppWinRtFullMemberFormatter(map));
54+
AdditionalAttributeFormatters.Add(new CppWinRtAttributeFormatter());
5455
break;
5556
case Consts.FSharpLowCase:
5657
case "fsharp":

mdoc/Mono.Documentation/Updater/Formatters/VBFullMemberFormatter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -584,7 +584,7 @@ private StringBuilder AppendParameter(StringBuilder buf, ParameterDefinition par
584584
buf.Append(GetTypeName(parameter.ParameterType, new DynamicParserContext(parameter)));
585585
if (parameter.HasDefault && parameter.IsOptional && parameter.HasConstant)
586586
{
587-
var parameterValue = AttributeFormatter.MakeAttributesValueString(parameter.Constant, parameter.ParameterType);
587+
var parameterValue = new AttributeFormatter().MakeAttributesValueString(parameter.Constant, parameter.ParameterType);
588588
buf.AppendFormat(" = {0}", parameterValue == "null" ? "Nothing" : parameterValue);
589589
}
590590
return buf;

mdoc/Test/ClassEnumeratorECMA.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@
106106
<Attribute>
107107
<AttributeName Language="C#">[System.STAThread]</AttributeName>
108108
<AttributeName Language="F#">[&lt;System.STAThread&gt;]</AttributeName>
109+
<AttributeName Language="C++ WINRT">/// [System.STAThread]</AttributeName>
109110
</Attribute>
110111
</Attributes>
111112
<ReturnValue>

mdoc/Test/TestEcmaDocs.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
<Attribute>
2020
<AttributeName Language="C#">[CLSCompliantAttribute(true)]</AttributeName>
2121
<AttributeName Language="F#">[&lt;CLSCompliantAttribute(true)&gt;]</AttributeName>
22+
<AttributeName Language="C++ WINRT">/// [CLSCompliantAttribute(true)]</AttributeName>
2223
<Excluded>0</Excluded>
2324
</Attribute>
2425
</Attributes>
@@ -61,6 +62,7 @@
6162
<Attribute>
6263
<AttributeName Language="C#">[CLSCompliantAttribute(true)]</AttributeName>
6364
<AttributeName Language="F#">[&lt;CLSCompliantAttribute(true)&gt;]</AttributeName>
65+
<AttributeName Language="C++ WINRT">/// [CLSCompliantAttribute(true)]</AttributeName>
6466
<Excluded>0</Excluded>
6567
</Attribute>
6668
</Attributes>
@@ -96,6 +98,7 @@
9698
<Attribute>
9799
<AttributeName Language="C#">[CLSCompliantAttribute(true)]</AttributeName>
98100
<AttributeName Language="F#">[&lt;CLSCompliantAttribute(true)&gt;]</AttributeName>
101+
<AttributeName Language="C++ WINRT">/// [CLSCompliantAttribute(true)]</AttributeName>
99102
<Excluded>0</Excluded>
100103
</Attribute>
101104
</Attributes>
@@ -194,6 +197,7 @@
194197
<Attribute>
195198
<AttributeName Language="C#">[CLSCompliantAttribute(true)]</AttributeName>
196199
<AttributeName Language="F#">[&lt;CLSCompliantAttribute(true)&gt;]</AttributeName>
200+
<AttributeName Language="C++ WINRT">/// [CLSCompliantAttribute(true)]</AttributeName>
197201
<Excluded>0</Excluded>
198202
</Attribute>
199203
</Attributes>

mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/Func`2.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
<Attributes>
1111
<Attribute>
1212
<AttributeName Language="C#">[Mono.DocTest.Doc("arg!")]</AttributeName>
13+
<AttributeName Language="C++ WINRT">/// [Mono.DocTest.Doc("arg!")]</AttributeName>
1314
</Attribute>
1415
</Attributes>
1516
<Constraints>
@@ -21,6 +22,7 @@
2122
<Attributes>
2223
<Attribute>
2324
<AttributeName Language="C#">[Mono.DocTest.Doc("ret!")]</AttributeName>
25+
<AttributeName Language="C++ WINRT">/// [Mono.DocTest.Doc("ret!")]</AttributeName>
2426
</Attribute>
2527
</Attributes>
2628
<Constraints>
@@ -34,13 +36,15 @@
3436
<Attributes>
3537
<Attribute>
3638
<AttributeName Language="C#">[Mono.DocTest.Doc("method")]</AttributeName>
39+
<AttributeName Language="C++ WINRT">/// [Mono.DocTest.Doc("method")]</AttributeName>
3740
</Attribute>
3841
</Attributes>
3942
<Parameters>
4043
<Parameter Name="a" Type="TArg">
4144
<Attributes>
4245
<Attribute>
4346
<AttributeName Language="C#">[Mono.DocTest.Doc("arg-actual")]</AttributeName>
47+
<AttributeName Language="C++ WINRT">/// [Mono.DocTest.Doc("arg-actual")]</AttributeName>
4448
</Attribute>
4549
</Attributes>
4650
</Parameter>
@@ -50,6 +54,7 @@
5054
<Attributes>
5155
<Attribute>
5256
<AttributeName Language="C#">[Mono.DocTest.Doc("return", Field=false)]</AttributeName>
57+
<AttributeName Language="C++ WINRT">/// [Mono.DocTest.Doc("return", Field=false)]</AttributeName>
5358
</Attribute>
5459
</Attributes>
5560
</ReturnValue>

mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/GenericBase`1.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
<Attributes>
5050
<Attribute>
5151
<AttributeName Language="C#">[Mono.DocTest.Doc("S")]</AttributeName>
52+
<AttributeName Language="C++ WINRT">/// [Mono.DocTest.Doc("S")]</AttributeName>
5253
</Attribute>
5354
</Attributes>
5455
</TypeParameter>

0 commit comments

Comments
 (0)