public override bool Parse(IItemFactory itemFactory, ITextProvider text, ITokenStream stream) { var variable = new VariableDefinition(ExpresionMode.Argument); if (variable.Parse(itemFactory, text, stream)) { Variable = variable; Children.Add(variable); } if (stream.Current.Type == TokenType.Comma) Comma = Children.AddCurrentAndAdvance(stream, SassClassifierType.Punctuation); return Children.Count > 0; }
protected void AddVariable(VariableDefinition variable, ITextProvider text) { if (variable != null && variable.IsValid) { var variableName = variable.Name; var builder = new StringBuilder(variableName.Length); builder.Append(variableName.Prefix.SourceType == TokenType.Dollar ? '$' : '!'); builder.Append(text.GetText(variableName.Name.Start, variableName.Name.Length)); var name = builder.ToString(); _Variables.Add(variable.Start, new VariableCompletionValue { DisplayText = name, CompletionText = name, Start = variableName.Start, End = variableName.End, Length = variableName.Length }); } }