/// <summary> /// 4.4.21. URL-unquoted state /// </summary> CssToken UrlUQ(Char current, CssTokenType type) { while (true) { if (current.IsSpaceCharacter()) { return UrlEnd(type); } else if (current == Symbols.RoundBracketClose || current == Symbols.EndOfFile) { return NewUrl(type, FlushBuffer()); } else if (current == Symbols.DoubleQuote || current == Symbols.SingleQuote || current == Symbols.RoundBracketOpen || current.IsNonPrintable()) { RaiseErrorOccurred(CssParseError.InvalidCharacter); return UrlBad(type); } else if (current != Symbols.ReverseSolidus) { _stringBuffer.Append(current); } else if (IsValidEscape(current)) { current = GetNext(); _stringBuffer.Append(ConsumeEscape(current)); } else { RaiseErrorOccurred(CssParseError.InvalidCharacter); return UrlBad(type); } current = GetNext(); } }
/// <summary> /// 4.4.21. URL-unquoted state /// </summary> CssToken UrlUQ(Char current, CssTokenType type) { while (true) { if (current.IsSpaceCharacter()) { return UrlEnd(Next, type); } else if (current == Specification.RoundBracketClose || current == Specification.EndOfFile) { return CssStringToken.Url(type, FlushBuffer()); } else if (current == Specification.DoubleQuote || current == Specification.SingleQuote || current == Specification.RoundBracketOpen || current.IsNonPrintable()) { RaiseErrorOccurred(ErrorCode.InvalidCharacter); return UrlBad(Next, type); } else if (current == Specification.ReverseSolidus) { if (IsValidEscape(current)) { current = Next; _stringBuffer.Append(ConsumeEscape(current)); } else { RaiseErrorOccurred(ErrorCode.InvalidCharacter); return UrlBad(Next, type); } } else _stringBuffer.Append(current); current = Next; } }
/// <summary> /// 4.4.21. URL-unquoted state /// </summary> CssToken UrlUQ(Char current, CssTokenType type) { while (true) { if (current.IsSpaceCharacter()) { return UrlEnd(_src.Next, type); } else if (current == Specification.RBC || current == Specification.EOF) { return CssStringToken.Url(type, FlushBuffer()); } else if (current == Specification.DQ || current == Specification.SQ || current == Specification.RBO || current.IsNonPrintable()) { RaiseErrorOccurred(ErrorCode.InvalidCharacter); return UrlBad(_src.Next, type); } else if (current == Specification.RSOLIDUS) { if (IsValidEscape(current)) { current = _src.Next; _stringBuffer.Append(ConsumeEscape(current)); } else { RaiseErrorOccurred(ErrorCode.InvalidCharacter); return UrlBad(_src.Next, type); } } else _stringBuffer.Append(current); current = _src.Next; } }