Esempio n. 1
0
        /// <summary>
        /// Deserializes a potentially endless sequence of objects from a stream source
        /// </summary>
        /// <param name="input">a streamed source of objects</param>
        /// <returns>a sequence of objects</returns>
        /// <remarks>
        /// character stream => token stream => object stream
        /// </remarks>
        public IEnumerable ReadMany(TextReader input)
        {
            ITextTokenizer <T> tokenizer = this.GetTokenizer();

            if (tokenizer == null)
            {
                throw new ArgumentNullException("tokenizer");
            }

            ITokenAnalyzer <T> analyzer = this.GetAnalyzer();

            if (analyzer == null)
            {
                throw new ArgumentNullException("analyzer");
            }

            try
            {
                // chars stream => token stream => object stream
                return(analyzer.Analyze(tokenizer.GetTokens(input)));
            }
            catch (DeserializationException)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new DeserializationException(ex.Message, tokenizer.Index, tokenizer.Line, tokenizer.Column, ex);
            }
        }
 public SimpleSentenceTextDocumenter(
     ITextTokenizer textTokenizer,
     IClassDocumenter classDocumenter)
 {
     this.textTokenizer = textTokenizer;
     this.classDocumenter = classDocumenter;
 }
Esempio n. 3
0
        /// <summary>
        /// Deserializes the data from the given input
        /// </summary>
        /// <param name="input">the input text</param>
        /// <param name="targetType">the expected type of the serialized data</param>
        public virtual object Read(string input, Type targetType)
        {
            ITextTokenizer <T> tokenizer = this.GetTokenizer();

            if (tokenizer == null)
            {
                throw new ArgumentNullException("tokenizer");
            }

            return(this.ReadSingle(tokenizer, tokenizer.GetTokens(input), targetType));
        }
Esempio n. 4
0
        /// <summary>
        /// Deserializes the data from the given input
        /// </summary>
        /// <param name="input">the input reader</param>
        /// <param name="targetType">the expected type of the serialized data</param>
        public virtual object Read(TextReader input, Type targetType)
        {
            ITextTokenizer <T> tokenizer = this.GetTokenizer();

            if (tokenizer == null)
            {
                throw new InvalidOperationException("Tokenizer is invalid");
            }

            return(this.ReadSingle(tokenizer, tokenizer.GetTokens(input), targetType));
        }
Esempio n. 5
0
        /// <summary>
        /// Ctor
        /// </summary>
        /// <param name="tokenizer"></param>
        /// <param name="transformer"></param>
        public TransformTokenizer(ITextTokenizer <TIn> tokenizer, IDataTransformer <TIn, TOut> transformer)
        {
            if (tokenizer == null)
            {
                new ArgumentNullException("tokenizer");
            }
            if (transformer == null)
            {
                new ArgumentNullException("transformer");
            }

            this.Tokenizer   = tokenizer;
            this.Transformer = transformer;
        }
Esempio n. 6
0
        private object ReadSingle(ITextTokenizer <T> tokenizer, IEnumerable <Token <T> > tokens, Type targetType)
        {
            ITokenAnalyzer <T> analyzer = this.GetAnalyzer();

            if (analyzer == null)
            {
                throw new ArgumentNullException("analyzer");
            }

            try
            {
                IEnumerator enumerator = analyzer.Analyze(tokens, targetType).GetEnumerator();
                if (!enumerator.MoveNext())
                {
                    return(null);
                }

                // character stream => token stream => object stream
                object value = enumerator.Current;

                // enforce only one object in stream
                if (!this.Settings.AllowTrailingContent && enumerator.MoveNext())
                {
                    throw new DeserializationException("Invalid trailing content", tokenizer.Index, tokenizer.Line, tokenizer.Column);
                }

                return(value);
            }
            catch (DeserializationException)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new DeserializationException(ex.Message, tokenizer.Index, tokenizer.Line, tokenizer.Column, ex);
            }
        }
Esempio n. 7
0
 public TextWrapper(ITextTokenizer textTokenizer = null)
 {
     _tokenizer  = textTokenizer ?? new WhitespaceTextTokenizer();
     _spaceWidth = GetTextWidth(" ");
 }