Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
 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);
             }
         }
     }
 }
Exemplo n.º 3
0
        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;
                }
            }
        }