public override ConsoleString Visit(FormatColorElement format, T item) { var color = _variablesExtractor .Visit(format.Content) .Select(v => _variables.TryGetValue(v.Name, out var variable) && variable.DynamicColors.TryGetValue(format.Color, out var colorFunc) ? colorFunc : null) .FirstOrDefault(x => !(x is null)) ?.Invoke(item) ?? Color.NoColor; var content = Visit(format.Content, item); var segments = content.Select(x => x.HasColor ? x : new ConsoleStringSegment(x.Content, color)); return(new ConsoleString(segments)); }
public override IEnumerable <FormatVariableElement> Visit(FormatColorElement format) => new FormatVariableElement[0];