Imports Microsoft.VisualBasic Imports System Imports System.IO Imports System.Text Public Class IndentedWriter Private myTextWriter As TextWriter = Console.Out Private myPrintFlag As Boolean = True Private myIndent As Integer = 0 Public Property Print() As Boolean Get Return myPrintFlag End Get Set(value As Boolean) myPrintFlag = value End Set End Property Public Property TextWriter() As TextWriter Get Return myTextWriter End Get Set(value As TextWriter) myTextWriter = value End Set End Property Public Sub PushIndent() myIndent += 2 End Sub Public Sub PopIndent() If myIndent > 0 Then myIndent -= 2 End If End Sub Public Sub WriteLine() WriteLine("") End Sub Public Sub WriteLine(format As String, ParamArray arg As Object()) WriteLine(String.Format(format, arg)) End Sub Public Sub WriteLine(message As String) If myPrintFlag Then Dim i As Integer Dim sb As StringBuilder = New StringBuilder() For i = 0 To myIndent - 1 sb.Append(" "C) Next i sb.Append(message) myTextWriter.WriteLine(sb.ToString()) End If End Sub End Class