private void WriteValueWithPadding(
            IColoredTextWriter textWriter,
            MessageTemplate.ArgumentToken arg,
            string formatedValue,
            Color?textForegroud,
            Color?textBackground,
            Color?valueForeground,
            Color?valueBackground)
        {
            if (arg.Alignment > 0)
            {
                int padLeft = arg.Alignment - formatedValue.Length;
                textWriter.Write(textForegroud, textBackground, ' ', padLeft);
            }

            textWriter.Write(
                valueForeground ?? textForegroud,
                valueBackground ?? textBackground,
                formatedValue);

            if (arg.Alignment < 0)
            {
                int padRight = -arg.Alignment - formatedValue.Length;
                textWriter.Write(textForegroud, textBackground, ' ', padRight);
            }
        }
 public ConsoleHighlightedLineViewProvider(
     IConsole console, IConsoleCursor consoleCursor,
     IColoredTextWriter coloredTextWriter,
     ITextHighlighter <TextStyle> textHighlighter)
 {
     _console           = console ?? throw new ArgumentNullException(nameof(console));
     _consoleCursor     = consoleCursor ?? throw new ArgumentNullException(nameof(consoleCursor));
     _coloredTextWriter = coloredTextWriter ?? throw new ArgumentNullException(nameof(coloredTextWriter));
     _textHighlighter   = textHighlighter ?? throw new ArgumentNullException(nameof(textHighlighter));
 }
 public static void Write(this IColoredTextWriter textWriter, Color?foreground, Color?background, char value, int count)
 {
     if (count <= 0)
     {
         return;
     }
     textWriter.SetColors(foreground, background);
     textWriter.Write(value, count);
     textWriter.ResetColors();
 }
Пример #4
0
 public ConsoleLockingOutput(
     IConsole console,
     IColoredTextWriter coloredTextWriter,
     IMessageTemplateParser templateParser,
     IMessageTemplateWriter templateWriter,
     IMessageTemplateColoredWriter templateColoredWriter,
     ConsoleOutputLock @lock)
 {
     _console               = console ?? throw new ArgumentNullException(nameof(console));
     _coloredTextWriter     = coloredTextWriter ?? throw new ArgumentNullException(nameof(coloredTextWriter));
     _templateParser        = templateParser ?? throw new ArgumentNullException(nameof(templateParser));
     _templateWriter        = templateWriter ?? throw new ArgumentNullException(nameof(templateWriter));
     _templateColoredWriter = templateColoredWriter ?? throw new ArgumentNullException(nameof(templateColoredWriter));
     _lock = @lock ?? throw new ArgumentNullException(nameof(@lock));
 }
 public ConsoleHighlightedLineView(
     IConsole console, IConsoleCursor consoleCursor,
     IColoredTextWriter coloredTextWriter,
     ITextHighlighter <TextStyle> textHighlighter)
 {
     _console           = console ?? throw new ArgumentNullException(nameof(console));
     _consoleCursor     = consoleCursor ?? throw new ArgumentNullException(nameof(consoleCursor));
     _coloredTextWriter = coloredTextWriter ?? throw new ArgumentNullException(nameof(coloredTextWriter));
     _textHighlighter   = textHighlighter ?? throw new ArgumentNullException(nameof(textHighlighter));
     _prevHighlights    = Array.Empty <StyledSpan <TextStyle> >();
     _line        = new InMemoryLineView();
     ViewType     = LineViewType.Normal;
     _hasChanges  = false;
     _prevLength  = 0;
     _maxPosition = 0;
 }
        public void Write(
            Colored <MessageTemplate> messageTemplate,
            IReadOnlyList <Colored <object> > args,
            IColoredTextWriter textWriter,
            IFormatProvider formatProvider = null)
        {
            if (messageTemplate == null)
            {
                throw new ArgumentNullException(nameof(messageTemplate));
            }
            if (args == null)
            {
                throw new ArgumentNullException(nameof(args));
            }
            if (textWriter == null)
            {
                throw new ArgumentNullException(nameof(textWriter));
            }

            var formatter = GetFormatter(formatProvider);

            var textForegroud  = messageTemplate.Foreground;
            var textBackground = messageTemplate.Background;

            foreach (var token in messageTemplate.Value.Tokens)
            {
                switch (token)
                {
                case MessageTemplate.TextToken text:
                    textWriter.Write(textForegroud, textBackground, text.Text);
                    break;

                case MessageTemplate.ArgumentToken arg:
                    var    coloredValue  = args[arg.Index];
                    string formatedValue = _valueFormatter.Format(coloredValue.Value, arg.Format, formatProvider, formatter);
                    WriteValueWithPadding(
                        textWriter, arg, formatedValue,
                        textForegroud, textBackground,
                        coloredValue.Foreground, coloredValue.Background);
                    break;

                default:
                    throw new FormatException($"Unknown format token `{token?.GetType().Name}`.");
                }
            }
        }
Пример #7
0
 public ConsoleInterface(
     IConsole console,
     IColoredTextWriter coloredTextWriter,
     ConsoleOutputLock outputLock,
     ILineReader lineReader,
     ICommandLineParser parser,
     IPromptMessage prompt = null)
 {
     _console            = console ?? throw new ArgumentNullException(nameof(console));
     _coloredTextWriter  = coloredTextWriter ?? throw new ArgumentNullException(nameof(coloredTextWriter));
     _outputLock         = outputLock ?? throw new ArgumentNullException(nameof(outputLock));
     _lineReader         = lineReader ?? throw new ArgumentNullException(nameof(lineReader));
     _parser             = parser ?? throw new ArgumentNullException(nameof(parser));
     _prompt             = prompt;
     _contextBuilder     = new ContextBuilder();
     _cliLoopTokenSource = new CancellationTokenSource();
     _cliLoop            = null;
     IsRunning           = false;
 }
 public static void Write(this IColoredTextWriter textWriter, Color?foreground, Color?background, char value)
 {
     textWriter.SetColors(foreground, background);
     textWriter.Write(value);
     textWriter.ResetColors();
 }
Пример #9
0
 public void Write(IColoredTextWriter writer)
 {
     writer.Write(_options.Foreground, _options.Background, _options.Message);
 }