Exemple #1
0
        private static EnumTypeDefinitionNode AddEnumValues(
            EnumTypeDefinitionNode typeDefinition,
            EnumTypeExtensionNode typeExtension)
        {
            if (typeExtension.Values.Count == 0)
            {
                return(typeDefinition);
            }

            var values =
                new OrderedDictionary <string, EnumValueDefinitionNode>();

            foreach (EnumValueDefinitionNode value in typeDefinition.Values)
            {
                values[value.Name.Value] = value;
            }

            foreach (EnumValueDefinitionNode value in typeExtension.Values)
            {
                // we allow an extension to override values.
                values[value.Name.Value] = value;
            }

            return(typeDefinition.WithValues(values.Values.ToList()));
        }
 protected override void VisitEnumTypeExtension(
     EnumTypeExtensionNode node,
     object context)
 {
     _types.Add(SchemaTypeReference.Create(
                    _enumTypeExtensionFactory.Create(_bindingLookup, node)));
 }
Exemple #3
0
 private void VisitEnumTypeExtension(
     EnumTypeExtensionNode node,
     ISyntaxWriter writer)
 {
     writer.Write(Keywords.Extend);
     writer.WriteSpace();
     VisitEnumTypeDefinitionBase(node, writer);
 }
 protected override void VisitEnumTypeExtension(
     EnumTypeExtensionNode node,
     TypeDefinitionItem context)
 {
     VisitName(node.Name, context);
     VisitMany(node.Directives, context, VisitDirective);
     VisitMany(node.Values, context, VisitEnumValueDefinition);
 }
    public EnumTypeExtension Create(IDescriptorContext context, EnumTypeExtensionNode node)
    {
        var preserveSyntaxNodes = context.Options.PreserveSyntaxNodes;

        var typeDefinition = new EnumTypeDefinition(node.Name.Value);

        typeDefinition.BindTo = node.GetBindingValue();

        SdlToTypeSystemHelper.AddDirectives(typeDefinition, node);

        DeclareValues(typeDefinition, node.Values, preserveSyntaxNodes);

        return(EnumTypeExtension.CreateUnsafe(typeDefinition));
    }
Exemple #6
0
 protected sealed override ISyntaxVisitorAction Enter(
     ISyntaxNode node,
     ISyntaxVisitorContext context)
 {
     return(node switch
     {
         DocumentNode n => Enter(n, context),
         OperationDefinitionNode n => Enter(n, context),
         VariableDefinitionNode n => Enter(n, context),
         VariableNode n => Enter(n, context),
         SelectionSetNode n => Enter(n, context),
         FieldNode n => Enter(n, context),
         ArgumentNode n => Enter(n, context),
         FragmentSpreadNode n => Enter(n, context),
         InlineFragmentNode n => Enter(n, context),
         FragmentDefinitionNode n => Enter(n, context),
         DirectiveNode n => Enter(n, context),
         NamedTypeNode n => Enter(n, context),
         ListTypeNode n => Enter(n, context),
         NonNullTypeNode n => Enter(n, context),
         ListValueNode n => Enter(n, context),
         ObjectValueNode n => Enter(n, context),
         ObjectFieldNode n => Enter(n, context),
         IValueNode n => Enter(n, context),
         SchemaDefinitionNode n => Enter(n, context),
         OperationTypeDefinitionNode n => Enter(n, context),
         ScalarTypeDefinitionNode n => Enter(n, context),
         ObjectTypeDefinitionNode n => Enter(n, context),
         FieldDefinitionNode n => Enter(n, context),
         InputValueDefinitionNode n => Enter(n, context),
         InterfaceTypeDefinitionNode n => Enter(n, context),
         UnionTypeDefinitionNode n => Enter(n, context),
         EnumTypeDefinitionNode n => Enter(n, context),
         EnumValueDefinitionNode n => Enter(n, context),
         InputObjectTypeDefinitionNode n => Enter(n, context),
         DirectiveDefinitionNode n => Enter(n, context),
         SchemaExtensionNode n => Enter(n, context),
         ScalarTypeExtensionNode n => Enter(n, context),
         ObjectTypeExtensionNode n => Enter(n, context),
         InterfaceTypeExtensionNode n => Enter(n, context),
         UnionTypeExtensionNode n => Enter(n, context),
         EnumTypeExtensionNode n => Enter(n, context),
         InputObjectTypeExtensionNode n => Enter(n, context),
         _ => throw new NotSupportedException()
     });
 protected virtual ISyntaxVisitorAction Enter(
     EnumTypeExtensionNode node,
     ISyntaxVisitorContext context) =>
 DefaultAction;
 protected virtual ISyntaxVisitorAction Leave(
     EnumTypeExtensionNode node,
     TContext context) =>
 DefaultAction;
Exemple #9
0
 protected virtual void VisitEnumTypeExtension(EnumTypeExtensionNode node)
 {
 }