| File: System\CodeDom\Compiler\ExposedTabStringIndentedTextWriter.cs | Web Access |
| Project: src\runtime\src\libraries\System.CodeDom\src\System.CodeDom.csproj (System.CodeDom) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Diagnostics; using System.IO; namespace System.CodeDom.Compiler { internal sealed class ExposedTabStringIndentedTextWriter : IndentedTextWriter { public ExposedTabStringIndentedTextWriter(TextWriter writer, string tabString) : base(writer, tabString) { Debug.Assert(tabString != null, "CodeGeneratorOptions can never have a null TabString"); TabString = tabString; } internal void InternalOutputTabs() { TextWriter inner = InnerWriter; for (int i = 0; i < Indent; i++) { inner.Write(TabString); } } internal string TabString { get; } // IndentedTextWriter doesn't expose this publicly } internal sealed class Indentation { private readonly ExposedTabStringIndentedTextWriter _writer; private readonly int _indent; private string _s; internal Indentation(ExposedTabStringIndentedTextWriter writer, int indent) { _writer = writer; _indent = indent; } internal string IndentationString { get { if (_s == null) { string tabString = _writer.TabString; switch (_indent) { case 1: _s = tabString; break; case 2: _s = tabString + tabString; break; case 3: _s = tabString + tabString + tabString; break; case 4: _s = tabString + tabString + tabString + tabString; break; default: var args = new string[_indent]; for (int i = 0; i < args.Length; i++) { args[i] = tabString; } return string.Concat(args); } } return _s; } } } }