/// <summary> /// 4.4.10. Ident-rest state /// </summary> CssToken IdentRest(Char current) { while (true) { if (current.IsName()) { _stringBuffer.Append(current); } else if (IsValidEscape(current)) { current = GetNext(); _stringBuffer.Append(ConsumeEscape(current)); } else if (current == Symbols.RoundBracketOpen) { var fn = _stringBuffer.ToString().ToLowerInvariant(); if (fn == FunctionNames.Url) { _stringBuffer.Clear(); return(UrlStart(CssTokenType.Url)); } else if (fn == FunctionNames.Domain) { _stringBuffer.Clear(); return(UrlStart(CssTokenType.Domain)); } else if (fn == FunctionNames.Url_Prefix) { _stringBuffer.Clear(); return(UrlStart(CssTokenType.UrlPrefix)); } return(CssKeywordToken.Function(FlushBuffer())); } //false could be replaced with a transform whitespace flag, which is set to true if in SVG transform mode. //else if (false && Specification.IsSpaceCharacter(current)) // InstantSwitch(TransformFunctionWhitespace); else { Back(); return(CssKeywordToken.Ident(FlushBuffer())); } current = GetNext(); } }
/// <summary> /// 4.4.11. Transform-function-whitespace state /// </summary> CssToken TransformFunctionWhitespace(Char current) { while (true) { current = GetNext(); if (current == Symbols.RoundBracketOpen) { Back(); return(CssKeywordToken.Function(FlushBuffer())); } else if (!current.IsSpaceCharacter()) { Back(2); return(CssKeywordToken.Ident(FlushBuffer())); } } }
/// <summary> /// 4.4.11. Transform-function-whitespace state /// </summary> CssToken TransformFunctionWhitespace(Char current) { while (true) { current = _src.Next; if (current == Specification.RoundBracketOpen) { _src.Back(); return(CssKeywordToken.Function(FlushBuffer())); } else if (!current.IsSpaceCharacter()) { _src.Back(2); return(CssKeywordToken.Ident(FlushBuffer())); } } }