/// <summary> /// 4.4.12. Number state /// </summary> CssToken NumberStart(Char current) { while (true) { if (current.IsOneOf(Symbols.Plus, Symbols.Minus)) { StringBuffer.Append(current); current = GetNext(); if (current == Symbols.Dot) { StringBuffer.Append(current); StringBuffer.Append(GetNext()); return NumberFraction(); } StringBuffer.Append(current); return NumberRest(); } else if (current == Symbols.Dot) { StringBuffer.Append(current); StringBuffer.Append(GetNext()); return NumberFraction(); } else if (current.IsDigit()) { StringBuffer.Append(current); return NumberRest(); } current = GetNext(); } }
/// <summary> /// 4.4.21. URL-unquoted state /// </summary> CssToken UrlUQ(Char current, String functionName) { while (true) { if (current.IsSpaceCharacter()) { return UrlEnd(functionName); } else if (current.IsOneOf(Symbols.RoundBracketClose, Symbols.EndOfFile)) { return NewUrl(functionName, FlushBuffer()); } else if (current.IsOneOf(Symbols.DoubleQuote, Symbols.SingleQuote, Symbols.RoundBracketOpen) || current.IsNonPrintable()) { RaiseErrorOccurred(CssParseError.InvalidCharacter); return UrlBad(functionName); } else if (current != Symbols.ReverseSolidus) { StringBuffer.Append(current); } else if (IsValidEscape(current)) { current = GetNext(); StringBuffer.Append(ConsumeEscape(current)); } else { RaiseErrorOccurred(CssParseError.InvalidCharacter); return UrlBad(functionName); } current = GetNext(); } }