Skip to content
This repository was archived by the owner on Jul 6, 2026. It is now read-only.

Commit 07c95e9

Browse files
authored
[Java.Interop.Tools.JavaSource] Parse <code/> tags (#1044)
Fixes: #1041 Translates Javadoc `<code/>` tags into C# `<c/>` tags, which should clean up thousands of illegible `&lt;code&gt;foo&lt;/code&gt;` occurrences.
1 parent a0728ed commit 07c95e9

3 files changed

Lines changed: 22 additions & 3 deletions

File tree

‎src/Java.Interop.Tools.JavaSource/Java.Interop.Tools.JavaSource/SourceJavadocToXmldocGrammar.HtmlBnfTerms.cs‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ internal void CreateRules (SourceJavadocToXmldocGrammar grammar)
3535
| FormCtrlDeclaration
3636
*/
3737
|InlineHyperLinkDeclaration
38+
|CodeElementDeclaration
3839
|grammar.InlineTagsTerms.AllInlineTerms
3940
|UnknownHtmlElementStart
4041
,
@@ -136,6 +137,12 @@ internal void CreateRules (SourceJavadocToXmldocGrammar grammar)
136137
varaElementValue=newXText(parseNode.ChildNodes[1].AstNode.ToString());
137138
parseNode.AstNode=aElementValue;
138139
};
140+
141+
CodeElementDeclaration.Rule=CreateStartElement("code",grammar)+InlineDeclarations+CreateEndElement("code",grammar);
142+
CodeElementDeclaration.AstConfig.NodeCreator=(context,parseNode)=>{
143+
vartarget=parseNode.ChildNodes[1].AstNode;
144+
parseNode.AstNode=newXElement("c",target);
145+
};
139146
}
140147

141148
staticIEnumerable<XElement>GetParagraphs(ParseTreeNodeListchildren)
@@ -205,6 +212,7 @@ static IEnumerable<XElement> GetParagraphs (ParseTreeNodeList children)
205212
publicreadonlyNonTerminalPreBlockDeclaration=newNonTerminal(nameof(PreBlockDeclaration),ConcatChildNodes);
206213
publicreadonlyNonTerminalInlineHyperLinkDeclaration=newNonTerminal(nameof(InlineHyperLinkDeclaration),ConcatChildNodes);
207214
publicreadonlyNonTerminalIgnorableElementDeclaration=newNonTerminal(nameof(IgnorableElementDeclaration),ConcatChildNodes);
215+
publicreadonlyNonTerminalCodeElementDeclaration=newNonTerminal(nameof(CodeElementDeclaration),ConcatChildNodes);
208216

209217
publicreadonlyTerminalInlineHyperLinkOpenTerm=newRegexBasedTerminal("<a href=",@"(?i)<a\s*href\s*="){
210218
AstConfig=newAstNodeConfig{

‎tests/Java.Interop.Tools.JavaSource-Tests/SourceJavadocToXmldocGrammar.HtmlBnfTermsTests.cs‎

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,5 +67,16 @@ public void HyperLinkDeclaration ()
6767
Assert.AreEqual("\"AutofillService.html#FieldClassification\"&gt;field classification",
6868
r.Root.AstNode.ToString());
6969
}
70+
71+
[Test]
72+
publicvoidCodeElementDeclaration()
73+
{
74+
varp=CreateParser(g =>g.HtmlTerms.CodeElementDeclaration);
75+
76+
varr=p.Parse("<code>input.position()</code>");
77+
Assert.IsFalse(r.HasErrors(),DumpMessages(r,p));
78+
Assert.AreEqual("<c>input.position()</c>",r.Root.AstNode.ToString());
79+
}
80+
7081
}
7182
}

‎tests/Java.Interop.Tools.JavaSource-Tests/SourceJavadocToXmldocParserTests.cs‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -146,14 +146,14 @@ more description here.</para>
146146
newParseResult{
147147
Javadoc="Something {@link #method}: description, \"<code>declaration</code>\" or \"<code>another declaration</code>\".\n\n@apiSince 1\n",
148148
FullXml=@"<member>
149-
<summary>Something <c>#method</c>: description, ""&lt;code&gt;declaration&lt;/code&gt;"" or ""&lt;code&gt;another declaration&lt;/code&gt;"".</summary>
149+
<summary>Something <c>#method</c>: description, ""<c>declaration</c>"" or ""<c>another declaration</c>"".</summary>
150150
<remarks>
151-
<para>Something <c>#method</c>: description, ""&lt;code&gt;declaration&lt;/code&gt;"" or ""&lt;code&gt;another declaration&lt;/code&gt;"".</para>
151+
<para>Something <c>#method</c>: description, ""<c>declaration</c>"" or ""<c>another declaration</c>"".</para>
152152
<para>Added in API level 1.</para>
153153
</remarks>
154154
</member>",
155155
IntelliSenseXml=@"<member>
156-
<summary>Something <c>#method</c>: description, ""&lt;code&gt;declaration&lt;/code&gt;"" or ""&lt;code&gt;another declaration&lt;/code&gt;"".</summary>
156+
<summary>Something <c>#method</c>: description, ""<c>declaration</c>"" or ""<c>another declaration</c>"".</summary>
157157
</member>",
158158
},
159159
newParseResult{

0 commit comments

Comments
 (0)