public static void ParseEnum(EnumDeclarationSyntax node, ref rSelect seldef) { foreach (var member in node.Members) { var field = new rSelectItem(); field.Name = member.Identifier.Text; field.NameHash = MurmurHash2.Hash(field.Name); var equalsValue = member.EqualsValue; if (equalsValue != null) { field.Value = equalsValue.Value.ToString(); } foreach (var attrList in member.AttributeLists) { foreach (var attr in attrList.Attributes) { IdentifierNameSyntax name = (IdentifierNameSyntax)attr.Name; SyntaxToken identifier = name.Identifier; if (identifier.Text == "SelectValue") { ParseSelectValueAttributeArguments(attr.ArgumentList, ref field); } } } seldef.Items.Add(field); } }
public override void VisitEnumDeclaration(EnumDeclarationSyntax node) { base.VisitEnumDeclaration(node); foreach (var attrList in node.AttributeLists) { foreach (var attr in attrList.Attributes) { IdentifierNameSyntax name = (IdentifierNameSyntax)attr.Name; SyntaxToken identifier = name.Identifier; if (identifier.Text == "Select") { var seldef = new rSelect(); seldef.Name = node.Identifier.Text; seldef.NameHash = MurmurHash2.Hash(seldef.Name); Select.ParseAttributes(attr.ArgumentList, ref seldef); Select.ParseEnum(node, ref seldef); Selects.Add(seldef); } } } }
public static void ParseAttributes(AttributeArgumentListSyntax args, ref rSelect seldef) { if (args == null) { return; } foreach (var argument in args.Arguments) { var nameEqSyntax = argument.NameEquals; var exprSyntax = (LiteralExpressionSyntax)argument.Expression; var argName = (IdentifierNameSyntax)nameEqSyntax.Name; if (argName.Identifier.Text == "Description") { seldef.Description = exprSyntax.Token.Text; } else if (argName.Identifier.Text == "Label") { seldef.Label = exprSyntax.Token.Text; } } }