Beispiel #1
0
        public static bool IsValidModifier(ITextProvider text, Token token, string name)
        {
            if (token.Type == TokenType.Identifier)
                return text.CompareOrdinal(token.Start, name);

            return false;
        }
Beispiel #2
0
        public static bool IsValidModifier(ITextProvider text, Token token, string name)
        {
            if (token.Type == TokenType.Identifier)
            {
                return(text.CompareOrdinal(token.Start, name));
            }

            return(false);
        }
        public static bool IsConditionalDirective(ITextProvider text, ITokenStream stream)
        {
            if (stream.Current.Type == TokenType.At)
            {
                var name = stream.Peek(1);
                if (name.Type == TokenType.Identifier || name.Type == TokenType.Function)
                    return text.CompareOrdinal(name.Start, "if");
            }

            return false;
        }
Beispiel #4
0
        public static bool IsConditionalDirective(ITextProvider text, ITokenStream stream)
        {
            if (stream.Current.Type == TokenType.At)
            {
                var name = stream.Peek(1);
                if (name.Type == TokenType.Identifier || name.Type == TokenType.Function)
                {
                    return(text.CompareOrdinal(name.Start, "if"));
                }
            }

            return(false);
        }
Beispiel #5
0
        public override bool Parse(IItemFactory itemFactory, ITextProvider text, ITokenStream stream)
        {
            if (stream.Current.Type == TokenType.Identifier && text.CompareOrdinal(stream.Current.Start, "and"))
            {
                Combinator = Children.AddCurrentAndAdvance(stream, SassClassifierType.Keyword);
            }

            if (stream.Current.Type == TokenType.OpenFunctionBrace)
            {
                OpenBrace = Children.AddCurrentAndAdvance(stream, SassClassifierType.FunctionBrace);
            }

            ParseItem feature;

            if (itemFactory.TryCreateParsedOrDefault(this, text, stream, out feature))
            {
                Feature = feature;
                Children.Add(feature);
            }

            if (stream.Current.Type == TokenType.Colon)
            {
                Colon = Children.AddCurrentAndAdvance(stream, SassClassifierType.Punctuation);
            }

            // dump all values
            while (!IsExpressionTerminator(stream.Current.Type))
            {
                ParseItem value;
                if (itemFactory.TryCreateParsedOrDefault(this, text, stream, out value))
                {
                    FeatureValues.Add(value);
                    Children.Add(value);
                }
                else
                {
                    Children.AddCurrentAndAdvance(stream);
                }
            }

            if (stream.Current.Type == TokenType.CloseFunctionBrace)
            {
                CloseBrace = Children.AddCurrentAndAdvance(stream, SassClassifierType.FunctionBrace);
            }

            return(Children.Count > 0);
        }
        public override bool Parse(IItemFactory itemFactory, ITextProvider text, ITokenStream stream)
        {
            if (stream.Current.Type == TokenType.Identifier && text.CompareOrdinal(stream.Current.Start, "and"))
                Combinator = Children.AddCurrentAndAdvance(stream, SassClassifierType.Keyword);

            if (stream.Current.Type == TokenType.OpenFunctionBrace)
                OpenBrace = Children.AddCurrentAndAdvance(stream, SassClassifierType.FunctionBrace);

            ParseItem feature;
            if (itemFactory.TryCreateParsedOrDefault(this, text, stream, out feature))
            {
                Feature = feature;
                Children.Add(feature);
            }

            if (stream.Current.Type == TokenType.Colon)
                Colon = Children.AddCurrentAndAdvance(stream, SassClassifierType.Punctuation);

            // dump all values
            while (!IsExpressionTerminator(stream.Current.Type))
            {
                ParseItem value;
                if (itemFactory.TryCreateParsedOrDefault(this, text, stream, out value))
                {
                    FeatureValues.Add(value);
                    Children.Add(value);
                }
                else
                {
                    Children.AddCurrentAndAdvance(stream);
                }
            }

            if (stream.Current.Type == TokenType.CloseFunctionBrace)
                CloseBrace = Children.AddCurrentAndAdvance(stream, SassClassifierType.FunctionBrace);

            return Children.Count > 0;
        }
 private bool IsKeyword(ITextProvider text, ITokenStream stream, string keyword)
 {
     return(text.CompareOrdinal(stream.Current.Start, keyword));
 }