コード例 #1
0
ファイル: MatchWhiteSpaceTests.cs プロジェクト: bstoney/NJade
        public void ShouldConsumeAllAvailableWhiteSpaceFromTokenizer()
        {
            var stringTokenizer     = new StringTokenizer(" \t\t \r\n ");
            var mockMatchWhiteSpace = new MockMatchWhiteSpace();

            var token = mockMatchWhiteSpace.CallImplementation(stringTokenizer);

            Assert.IsNotNull(token);
            Assert.IsTrue(stringTokenizer.IsAtEnd());
        }
コード例 #2
0
ファイル: MatchWord.cs プロジェクト: bstoney/NJade
        /// <summary>
        /// Gets the token.
        /// </summary>
        /// <param name="tokenizer">The tokenizer.</param>
        /// <returns>
        /// A token if the matcher matches successfully; otherwise, null.
        /// </returns>
        protected override StringToken GetTokenImpl(StringTokenizer tokenizer)
        {
            var  location  = tokenizer.GetCurrentLocation();
            bool foundWord = false;
            var  word      = new StringBuilder();

            while (!tokenizer.IsAtEnd() && !string.IsNullOrWhiteSpace(tokenizer.Current) && !this.SpecialCharacters.With(s => s.Any(c => c.IsMatch(tokenizer))))
            {
                foundWord = true;
                word.Append(tokenizer.Current);

                tokenizer.Consume();
            }

            return(foundWord ? location.CreateToken(TokenType.Word, word.ToString()) : null);
        }
コード例 #3
0
ファイル: MatchWhiteSpace.cs プロジェクト: bstoney/NJade
        /// <summary>
        /// Gets the token.
        /// </summary>
        /// <param name="tokenizer">The tokenizer.</param>
        /// <returns>
        /// A token if the matcher matches successfully; otherwise, null.
        /// </returns>
        protected override StringToken GetTokenImpl(StringTokenizer tokenizer)
        {
            var location = tokenizer.GetCurrentLocation();

            bool foundWhiteSpace = false;
            var  whitesSpace     = new StringBuilder();

            while (!tokenizer.IsAtEnd() && string.IsNullOrWhiteSpace(tokenizer.Current))
            {
                foundWhiteSpace = true;

                whitesSpace.Append(tokenizer.Current);
                tokenizer.Consume();
            }

            if (foundWhiteSpace)
            {
                return(location.CreateToken(TokenType.WhiteSpace, whitesSpace.ToString()));
            }

            return(null);
        }
コード例 #4
0
        /// <summary>
        /// Gets the token.
        /// </summary>
        /// <param name="tokenizer">The tokenizer.</param>
        /// <returns>
        /// A token if the matcher matches successfully; otherwise, null.
        /// </returns>
        protected override StringToken GetTokenImpl(StringTokenizer tokenizer)
        {
            if (tokenizer.Current == this.StringDelimiter)
            {
                var location = tokenizer.GetCurrentLocation();
                var str      = new StringBuilder();
                tokenizer.Consume();

                while (!tokenizer.IsAtEnd() && tokenizer.Current != this.StringDelimiter)
                {
                    str.Append(tokenizer.Current);
                    tokenizer.Consume();
                }

                if (tokenizer.Current == this.StringDelimiter)
                {
                    tokenizer.Consume();

                    return(location.CreateToken(TokenType.QuotedString, str.ToString()));
                }
            }

            return(null);
        }