public override bool Parse(IItemFactory itemFactory, ITextProvider text, ITokenStream stream) { if (AtRule.IsRule(text, stream, "for")) { ParseRule(itemFactory, text, stream); var variable = new VariableName(SassClassifierType.VariableDefinition); if (variable.Parse(itemFactory, text, stream)) { Variable = variable; Children.Add(Variable); } if (IsKeyword(text, stream, "from")) { FromKeyword = Children.AddCurrentAndAdvance(stream, SassClassifierType.Keyword); while (!(IsKeyword(text, stream, "to") || IsKeyword(text, stream, "through"))) { ParseItem fromValue; if (itemFactory.TryCreateParsedOrDefault(this, text, stream, out fromValue)) { FromExpressionValues.Add(fromValue); Children.Add(fromValue); } } } bool isToKeyword = IsKeyword(text, stream, "to"); bool isThroughKeyword = !isToKeyword && IsKeyword(text, stream, "through"); if (isToKeyword || isThroughKeyword) { if (isToKeyword) { ToKeyword = Children.AddCurrentAndAdvance(stream, SassClassifierType.Keyword); } if (isThroughKeyword) { ThroughKeyword = Children.AddCurrentAndAdvance(stream, SassClassifierType.Keyword); } while (!IsRangeTerminator(stream.Current.Type)) { ParseItem rangeValue; if (itemFactory.TryCreateParsedOrDefault(this, text, stream, out rangeValue)) { RangeExpressionValues.Add(rangeValue); Children.Add(rangeValue); } } } ParseBody(itemFactory, text, stream); } return(Children.Count > 0); }
public override bool Parse(IItemFactory itemFactory, ITextProvider text, ITokenStream stream) { var name = new VariableName(SassClassifierType.VariableReference); if (name.Parse(itemFactory, text, stream)) { Name = name; Children.Add(name); } return(Children.Count > 0); }
public override bool Parse(IItemFactory itemFactory, ITextProvider text, ITokenStream stream) { var name = new VariableName(SassClassifierType.VariableDefinition); if (name.Parse(itemFactory, text, stream)) { Name = name; Children.Add(name); } if (stream.Current.Type == TokenType.Colon) { Colon = Children.AddCurrentAndAdvance(stream); } while (!IsValueTerminator(Mode, stream)) { ParseItem item; if (itemFactory.TryCreateParsedOrDefault(this, text, stream, out item)) { Values.Add(item); Children.Add(item); } } if (stream.Current.Type == TokenType.Bang) { var modifier = new DefaultModifier(); if (modifier.Parse(itemFactory, text, stream)) { Modifier = modifier; Children.Add(modifier); } else { Children.AddCurrentAndAdvance(stream); } } if (stream.Current.Type == TokenType.Semicolon) { Semicolon = Children.AddCurrentAndAdvance(stream); } return(Children.Count > 0); }