Skip to content

Commit a2ff814

Browse files
committed
still getting my head around enum manipulation with roslyn
1 parent 65907e8 commit a2ff814

File tree

1 file changed

+40
-3
lines changed

1 file changed

+40
-3
lines changed

mdresgen/IconThing.cs

Lines changed: 40 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ namespace mdresgen
1717
class IconThing
1818
{
1919
public void Run()
20-
{
20+
{
2121
Console.WriteLine("Downloading icon data...");
2222

2323
//var nameDataPairs = GetNameDataPairs(GetSourceData()).ToList();
@@ -57,15 +57,52 @@ private void UpdateEnum(string sourceFile)
5757
var sourceText = SourceText.From(new FileStream(sourceFile, FileMode.Open));
5858
var syntaxTree = CSharpSyntaxTree.ParseText(sourceText);
5959

60+
var newSyntaxTree = CSharpSyntaxTree.ParseText("Red, Green, Blue");
61+
var syntaxNodes = newSyntaxTree.GetRoot().ChildNodes().ToList();
62+
6063
var enumDeclarationSyntax = syntaxTree.GetRoot().ChildNodes()
6164
//should be the root name space
6265
.Single()
6366
.ChildNodes().OfType<EnumDeclarationSyntax>()
6467
.Last();
68+
69+
70+
var emptyEnumDeclarationSyntax = enumDeclarationSyntax.RemoveNodes(enumDeclarationSyntax.ChildNodes().OfType<EnumMemberDeclarationSyntax>(), SyntaxRemoveOptions.KeepNoTrivia);
71+
72+
var generatedEnumDeclarationSyntax = emptyEnumDeclarationSyntax.AddMembers(
73+
SyntaxFactory.EnumMemberDeclaration("Aston"),
74+
SyntaxFactory.EnumMemberDeclaration("Villa"));
75+
76+
var generatedSyntaxTree = generatedEnumDeclarationSyntax.SyntaxTree;
77+
78+
var rootSyntaxNode = enumDeclarationSyntax.SyntaxTree.GetRoot();
79+
var replaceNode = rootSyntaxNode.ReplaceNode(rootSyntaxNode.ChildNodes().Single(), generatedSyntaxTree.GetRoot());
80+
81+
82+
83+
var modifiedSyntaxTree = syntaxTree.GetRoot().ReplaceNode(emptyEnumDeclarationSyntax, generatedEnumDeclarationSyntax);
84+
85+
86+
var nodes = emptyEnumDeclarationSyntax.ChildNodes().ToList();
87+
//emptyEnumDeclarationSyntax.InsertNodesAfter()
88+
89+
90+
91+
//emptyEnumDeclarationSyntax.AddMembers(new EnumMemberDeclarationSyntax(new CSharpSyntaxNode(new GreenNode(), ))
92+
93+
//enumDeclarationSyntax.ReplaceNodes(enumDeclarationSyntax.ChildNodes().OfType<EnumMemberDeclarationSyntax>(), ).ReplaceSyntax(enumDeclarationSyntax.SyntaxTree,)
94+
95+
// enumDeclarationSyntax.
96+
97+
// enumDeclarationSyntax.Re
98+
99+
100+
101+
//EnumMemberDeclarationSyntax.P
102+
103+
//var enumMemberDeclarationSyntax = enumDeclarationSyntax.ChildNodes().OfType<EnumMemberDeclarationSyntax>().Single();
65104

66-
var enumMemberDeclarationSyntax = enumDeclarationSyntax.ChildNodes().OfType<EnumMemberDeclarationSyntax>().Single();
67105

68-
69106

70107

71108
}

0 commit comments

Comments
 (0)