Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        public void EncodeTest(char Value)
        {
            string Actual = new DelimToken(Value).Encode();

            Assert.Equal(Value.ToString(), Actual);
        }