Ejemplo n.º 1
0
        private static bool TryCreateNativeTypeParserDeserializer(
            Action <SchemaError> reportError,
            InputObjectType inputObjectType,
            Type nativeType,
            out Func <ObjectValueNode, object> deserializer)
        {
            if (nativeType.IsDefined(typeof(GraphQLLiteralParserAttribute)))
            {
                Type parserType = nativeType
                                  .GetCustomAttribute <GraphQLLiteralParserAttribute>().Type;
                if (typeof(ILiteralParser).IsAssignableFrom(parserType))
                {
                    ILiteralParser parser = (ILiteralParser)Activator
                                            .CreateInstance(parserType);
                    deserializer = literal => parser.ParseLiteral(literal);
                    return(true);
                }
                else
                {
                    reportError(new SchemaError(
                                    "A literal parser has to implement `ILiteralParser`.",
                                    inputObjectType));
                }
            }

            deserializer = null;
            return(false);
        }
Ejemplo n.º 2
0
        /// <summary>
        ///     Initializes a new instance of the <see cref="PatternParser" /> class.
        /// </summary>
        /// <param name="literalParser">
        ///     The literal parser.
        /// </param>
        public PatternParser(ILiteralParser literalParser)
        {
            if (literalParser == null)
            {
                throw new ArgumentNullException("literalParser");
            }

            this.literalParser = literalParser;
        }
Ejemplo n.º 3
0
        /// <summary>
        ///     Initializes a new instance of the <see cref="PatternParser" /> class.
        /// </summary>
        /// <param name="literalParser">
        ///     The literal parser.
        /// </param>
        public PatternParser(ILiteralParser literalParser)
        {
            if (literalParser == null)
            {
                throw new ArgumentNullException("literalParser");
            }

            this.literalParser = literalParser;
        }
Ejemplo n.º 4
0
 public virtual void Reset(IListSource <Token> tokens, ISourceFile file, IParsingOptions parsingOptions)
 {
     CheckParam.IsNotNull("tokens", tokens);
     CheckParam.IsNotNull("file", file);
     _tokensRoot    = _tokens = tokens;
     _sourceFile    = file;
     _literalParser = parsingOptions?.LiteralParser ?? EcsLiteralHandlers.Value;
     F                = new LNodeFactory(file);
     InputPosition    = 0;          // reads LT(0)
     _tentativeErrors = new TentativeState(false);
 }
Ejemplo n.º 5
0
 public void Reset(IList <Token> list, ISourceFile file, IParsingOptions options, int startIndex = 0)
 {
     Reset(list, default(Token), file, startIndex);
     _literalParser = options?.LiteralParser ?? StandardLiteralHandlers.Value;
 }
Ejemplo n.º 6
0
 public Les3Parser(IList <Token> list, ISourceFile file, IMessageSink sink, IParsingOptions options, int startIndex = 0)
     : base(list, prev => new Token((int)TokenType.EOF, prev.EndIndex, 0, null), (int)TokenType.EOF, file, startIndex)
 {
     _literalParser = options?.LiteralParser ?? StandardLiteralHandlers.Value;
     ErrorSink      = sink;
 }
Ejemplo n.º 7
0
 public static bool IsUnknown <T>(ILiteralParser <T> parser)
 {
     return(parser is UnknownLiteralParser <T>);
 }