예제 #1
0
        /// <summary>
        /// 4.4.3. Single quoted string state
        /// </summary>
        CssToken StringSQ(Char current)
        {
            while (true)
            {
                switch (current)
                {
                case Specification.SQ:
                case Specification.EOF:
                    return(CssStringToken.Plain(FlushBuffer()));

                case Specification.FF:
                case Specification.LF:
                    RaiseErrorOccurred(ErrorCode.LineBreakUnexpected);
                    src.Back();
                    return(CssStringToken.Plain(FlushBuffer(), true));

                case Specification.RSOLIDUS:
                    current = src.Next;

                    if (current.IsLineBreak())
                    {
                        stringBuffer.AppendLine();
                    }
                    else if (current != Specification.EOF)
                    {
                        stringBuffer.Append(ConsumeEscape(current));
                    }
                    else
                    {
                        RaiseErrorOccurred(ErrorCode.EOF);
                        src.Back();
                        return(CssStringToken.Plain(FlushBuffer(), true));
                    }

                    break;

                default:
                    stringBuffer.Append(current);
                    break;
                }

                current = src.Next;
            }
        }