static CssValue Consume_MediaFeature_Value(DataConsumer <CssToken> Stream) { if (Stream is null) { throw new CssParserException(CssErrors.STREAM_IS_NULL); } /* Consume: <number> | <dimension> | <ident> | <ratio> */ Consume_All_Whitespace(Stream); switch (Stream.Next.Type) { case ECssTokenType.Number: { var numTok = Stream.Consume() as NumberToken; /* This could be a ratio - so check if it is */ /* A ratio is a <number> <?whitespace> / <?whitespace> <number> */ if (ParserCommon.Starts_Ratio_Value(Stream.AsSpan())) { Consume_All_Whitespace(Stream); DelimToken dtok = Stream.Consume() as DelimToken; Consume_All_Whitespace(Stream); NumberToken numTok2 = Stream.Consume() as NumberToken; double ratioValue = ((double)numTok.Number / (double)numTok2.Number); return(new CssValue(ECssValueTypes.RATIO, ratioValue)); } /* Nope, its just a number */ return(new CssValue(ECssValueTypes.NUMBER, numTok.Number)); } case ECssTokenType.Dimension: case ECssTokenType.Ident: { return(Consume_CssValue(Stream)); } } // throw new CssSyntaxErrorException($"Expected Number/Dimension/Keyword token but got: \"{Enum.GetName(typeof(ECssTokenType), Stream.Next.Type)}\""); throw new CssSyntaxErrorException(CssErrors.UNEXPECTED_TOKEN, Stream); }
public void EncodeTest(char Value) { string Actual = new DelimToken(Value).Encode(); Assert.Equal(Value.ToString(), Actual); }