Esempio n. 1
0
        public List<Token> Parse(string text)
        {
            sourceText = text ?? "";
            sourceLength = sourceText.Length;

            currentOffset = 0;
            currentToken = null;

            result = new List<Token>();

            while (currentOffset < sourceLength)
            {
                if (Matches("\r\n"))
                {
                    StartToken(TokenType.NewLine, 2);
                }
                else if (Matches("\n") || Matches("\r"))
                {
                    StartToken(TokenType.NewLine, 1);
                }
                else if (IsAtLineStart() && Matches("#"))
                {
                    StartToken(TokenType.WordForm, 1);
                }
                else if (IsAtLineStart() && Matches("//"))
                {
                    StartToken(TokenType.Example, 2);
                }
                else if (IsAtLineStart())
                {
                    StartToken(TokenType.Translation, 1);
                }
                else
                {
                    ExtendToken();
                }
            }

            return result;
        }
Esempio n. 2
0
 private void StartToken(TokenType tokenType, int length)
 {
     currentToken = new Token(sourceText, tokenType, currentOffset, length);
     result.Add(currentToken);
     currentOffset += length;
 }
Esempio n. 3
0
        private void WriteToken(HtmlTextWriter writer, Token token)
        {
            string divClass = null;

            if (token.Type == TokenType.WordForm)
            {
                divClass = CssWordForm;
            }

            if (token.Type == TokenType.Translation)
            {
                divClass = CssWordTranslation;
            }

            if (token.Type == TokenType.Example)
            {
                divClass = CssWordExample;
            }

            if (divClass != null)
            {
                writer.AddAttribute(HtmlTextWriterAttribute.Class, divClass);
            }
            writer.RenderBeginTag(HtmlTextWriterTag.Div);
            writer.WriteLine(token.Value);
            writer.RenderEndTag();
        }