Example #1
0
        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];