internal static ContentView Create(object content, TextSpanFormatter formatter) { if (content == null) { return(new ContentView(TextSpan.Empty())); } return(CreateView((dynamic)content, formatter)); }
public void When_formatting_null_values_then_empty_span_is_returned() { var formatter = new TextSpanFormatter(); var span = formatter.Format(null); span.Should().Be(TextSpan.Empty()); }
private void Render(TextSpan span, Region region = null) { if (span == null) { span = TextSpan.Empty(); } else if (_resetAfterRender) { span = new ContainerSpan( span, ForegroundColorSpan.Reset(), BackgroundColorSpan.Reset()); } if (_mode == OutputMode.Auto) { _mode = _terminal?.DetectOutputMode() ?? OutputMode.PlainText; } TextSpanVisitor visitor; switch (_mode) { case OutputMode.NonAnsi: visitor = new NonAnsiRenderingSpanVisitor( _terminal, region); break; case OutputMode.Ansi: visitor = new AnsiRenderingSpanVisitor( _console, region); break; case OutputMode.PlainText: visitor = new FileRenderingSpanVisitor( _console.Out, new Region(region.Left, region.Top, region.Width, region.Height, false)); break; default: throw new NotSupportedException(); } visitor.Visit(span); }
public void Empty_strings_are_returned_as_empty_spans() { var formatter = new TextSpanFormatter(); var span = formatter.ParseToSpan( $"{Ansi.Color.Foreground.Red}normal{Ansi.Color.Foreground.Default:a}" ); var containerSpan = span.Should().BeOfType <ContainerSpan>().Subject; containerSpan .Should() .BeEquivalentTo( new ContainerSpan( TextSpan.Empty(), new ContentSpan("normal"), TextSpan.Empty() ), options => options.WithStrictOrdering().Excluding(s => s.Parent).Excluding(s => s.Root) ); }
public override void Render(ConsoleRenderer renderer, Region region) { Size[,] sizes = GetGridSizes(renderer, new Size(region.Width, region.Height)); int top = region.Top; for (int row = 0; row < _rows.Count; row++) { int left = region.Left; int maxRowHeight = 0; for (int column = 0; column < _columns.Count; column++) { var paddingWidth = GetColumnPaddingWidth(column); if (ChildLocations[column, row] is not { } child || sizes[column, row].Width - paddingWidth <= 0 || sizes[column, row].Height <= 0) { //child no view or no space left to render continue; } var contentSize = new Size(sizes[column, row].Width - paddingWidth, sizes[column, row].Height); child.Render(renderer, new Region(left, top, contentSize)); if (paddingWidth > 0) { // Explicit render the space between the columns to improve rendering in plain text var paddingSize = new Size(paddingWidth, sizes[column, row].Height); renderer.RenderToRegion(TextSpan.Empty(), new Region(left + contentSize.Width, top, paddingSize)); } left += sizes[column, row].Width; maxRowHeight = Math.Max(maxRowHeight, sizes[column, row].Height); } top += maxRowHeight; } }