You've already forked linux-packaging-mono
Imported Upstream version 4.6.0.125
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
This commit is contained in:
parent
a569aebcfd
commit
e79aa3c0ed
@ -0,0 +1,463 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <copyright file="IndentTextWriter.cs" company="Microsoft">
|
||||
//
|
||||
// <OWNER>[....]</OWNER>
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// </copyright>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace System.CodeDom.Compiler {
|
||||
|
||||
using System.Diagnostics;
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using System.Security.Permissions;
|
||||
using System.Globalization;
|
||||
|
||||
/// <devdoc>
|
||||
/// <para>Provides a text writer that can indent new lines by a tabString token.</para>
|
||||
/// </devdoc>
|
||||
public class IndentedTextWriter : TextWriter {
|
||||
private TextWriter writer;
|
||||
private int indentLevel;
|
||||
private bool tabsPending;
|
||||
private string tabString;
|
||||
|
||||
/// <devdoc>
|
||||
/// <para>[To be supplied.]</para>
|
||||
/// </devdoc>
|
||||
public const string DefaultTabString = " ";
|
||||
|
||||
/// <devdoc>
|
||||
/// <para>
|
||||
/// Initializes a new instance of <see cref='System.CodeDom.Compiler.IndentedTextWriter'/> using the specified
|
||||
/// text writer and default tab string.
|
||||
/// </para>
|
||||
/// </devdoc>
|
||||
public IndentedTextWriter(TextWriter writer) : this(writer, DefaultTabString) {
|
||||
}
|
||||
|
||||
/// <devdoc>
|
||||
/// <para>
|
||||
/// Initializes a new instance of <see cref='System.CodeDom.Compiler.IndentedTextWriter'/> using the specified
|
||||
/// text writer and tab string.
|
||||
/// </para>
|
||||
/// </devdoc>
|
||||
public IndentedTextWriter(TextWriter writer, string tabString): base(CultureInfo.InvariantCulture) {
|
||||
this.writer = writer;
|
||||
this.tabString = tabString;
|
||||
indentLevel = 0;
|
||||
tabsPending = false;
|
||||
}
|
||||
|
||||
/// <devdoc>
|
||||
/// <para>[To be supplied.]</para>
|
||||
/// </devdoc>
|
||||
public override Encoding Encoding {
|
||||
get {
|
||||
return writer.Encoding;
|
||||
}
|
||||
}
|
||||
|
||||
/// <devdoc>
|
||||
/// <para>
|
||||
/// Gets or sets the new line character to use.
|
||||
/// </para>
|
||||
/// </devdoc>
|
||||
public override string NewLine {
|
||||
get {
|
||||
return writer.NewLine;
|
||||
}
|
||||
|
||||
set {
|
||||
writer.NewLine = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <devdoc>
|
||||
/// <para>
|
||||
/// Gets or sets the number of spaces to indent.
|
||||
/// </para>
|
||||
/// </devdoc>
|
||||
public int Indent {
|
||||
get {
|
||||
return indentLevel;
|
||||
}
|
||||
set {
|
||||
Debug.Assert(value >= 0, "Bogus Indent... probably caused by mismatched Indent++ and Indent--");
|
||||
if (value < 0) {
|
||||
value = 0;
|
||||
}
|
||||
indentLevel = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <devdoc>
|
||||
/// <para>
|
||||
/// Gets or sets the TextWriter to use.
|
||||
/// </para>
|
||||
/// </devdoc>
|
||||
public TextWriter InnerWriter {
|
||||
get {
|
||||
return writer;
|
||||
}
|
||||
}
|
||||
|
||||
internal string TabString {
|
||||
get { return tabString; }
|
||||
}
|
||||
|
||||
/// <devdoc>
|
||||
/// <para>
|
||||
/// Closes the document being written to.
|
||||
/// </para>
|
||||
/// </devdoc>
|
||||
public override void Close() {
|
||||
writer.Close();
|
||||
}
|
||||
|
||||
/// <devdoc>
|
||||
/// <para>[To be supplied.]</para>
|
||||
/// </devdoc>
|
||||
public override void Flush() {
|
||||
writer.Flush();
|
||||
}
|
||||
|
||||
/// <devdoc>
|
||||
/// <para>[To be supplied.]</para>
|
||||
/// </devdoc>
|
||||
protected virtual void OutputTabs() {
|
||||
if (tabsPending) {
|
||||
for (int i=0; i < indentLevel; i++) {
|
||||
writer.Write(tabString);
|
||||
}
|
||||
tabsPending = false;
|
||||
}
|
||||
}
|
||||
|
||||
/// <devdoc>
|
||||
/// <para>
|
||||
/// Writes a string
|
||||
/// to the text stream.
|
||||
/// </para>
|
||||
/// </devdoc>
|
||||
public override void Write(string s) {
|
||||
OutputTabs();
|
||||
writer.Write(s);
|
||||
}
|
||||
|
||||
/// <devdoc>
|
||||
/// <para>
|
||||
/// Writes the text representation of a Boolean value to the text stream.
|
||||
/// </para>
|
||||
/// </devdoc>
|
||||
public override void Write(bool value) {
|
||||
OutputTabs();
|
||||
writer.Write(value);
|
||||
}
|
||||
|
||||
/// <devdoc>
|
||||
/// <para>
|
||||
/// Writes a character to the text stream.
|
||||
/// </para>
|
||||
/// </devdoc>
|
||||
public override void Write(char value) {
|
||||
OutputTabs();
|
||||
writer.Write(value);
|
||||
}
|
||||
|
||||
/// <devdoc>
|
||||
/// <para>
|
||||
/// Writes a
|
||||
/// character array to the text stream.
|
||||
/// </para>
|
||||
/// </devdoc>
|
||||
public override void Write(char[] buffer) {
|
||||
OutputTabs();
|
||||
writer.Write(buffer);
|
||||
}
|
||||
|
||||
/// <devdoc>
|
||||
/// <para>
|
||||
/// Writes a subarray
|
||||
/// of characters to the text stream.
|
||||
/// </para>
|
||||
/// </devdoc>
|
||||
public override void Write(char[] buffer, int index, int count) {
|
||||
OutputTabs();
|
||||
writer.Write(buffer, index, count);
|
||||
}
|
||||
|
||||
/// <devdoc>
|
||||
/// <para>
|
||||
/// Writes the text representation of a Double to the text stream.
|
||||
/// </para>
|
||||
/// </devdoc>
|
||||
public override void Write(double value) {
|
||||
OutputTabs();
|
||||
writer.Write(value);
|
||||
}
|
||||
|
||||
/// <devdoc>
|
||||
/// <para>
|
||||
/// Writes the text representation of
|
||||
/// a Single to the text
|
||||
/// stream.
|
||||
/// </para>
|
||||
/// </devdoc>
|
||||
public override void Write(float value) {
|
||||
OutputTabs();
|
||||
writer.Write(value);
|
||||
}
|
||||
|
||||
/// <devdoc>
|
||||
/// <para>
|
||||
/// Writes the text representation of an integer to the text stream.
|
||||
/// </para>
|
||||
/// </devdoc>
|
||||
public override void Write(int value) {
|
||||
OutputTabs();
|
||||
writer.Write(value);
|
||||
}
|
||||
|
||||
/// <devdoc>
|
||||
/// <para>
|
||||
/// Writes the text representation of an 8-byte integer to the text stream.
|
||||
/// </para>
|
||||
/// </devdoc>
|
||||
public override void Write(long value) {
|
||||
OutputTabs();
|
||||
writer.Write(value);
|
||||
}
|
||||
|
||||
/// <devdoc>
|
||||
/// <para>
|
||||
/// Writes the text representation of an object
|
||||
/// to the text stream.
|
||||
/// </para>
|
||||
/// </devdoc>
|
||||
public override void Write(object value) {
|
||||
OutputTabs();
|
||||
writer.Write(value);
|
||||
}
|
||||
|
||||
/// <devdoc>
|
||||
/// <para>
|
||||
/// Writes out a formatted string, using the same semantics as specified.
|
||||
/// </para>
|
||||
/// </devdoc>
|
||||
public override void Write(string format, object arg0) {
|
||||
OutputTabs();
|
||||
writer.Write(format, arg0);
|
||||
}
|
||||
|
||||
/// <devdoc>
|
||||
/// <para>
|
||||
/// Writes out a formatted string,
|
||||
/// using the same semantics as specified.
|
||||
/// </para>
|
||||
/// </devdoc>
|
||||
public override void Write(string format, object arg0, object arg1) {
|
||||
OutputTabs();
|
||||
writer.Write(format, arg0, arg1);
|
||||
}
|
||||
|
||||
/// <devdoc>
|
||||
/// <para>
|
||||
/// Writes out a formatted string,
|
||||
/// using the same semantics as specified.
|
||||
/// </para>
|
||||
/// </devdoc>
|
||||
public override void Write(string format, params object[] arg) {
|
||||
OutputTabs();
|
||||
writer.Write(format, arg);
|
||||
}
|
||||
|
||||
/// <devdoc>
|
||||
/// <para>
|
||||
/// Writes the specified
|
||||
/// string to a line without tabs.
|
||||
/// </para>
|
||||
/// </devdoc>
|
||||
public void WriteLineNoTabs(string s) {
|
||||
writer.WriteLine(s);
|
||||
}
|
||||
|
||||
/// <devdoc>
|
||||
/// <para>
|
||||
/// Writes the specified string followed by
|
||||
/// a line terminator to the text stream.
|
||||
/// </para>
|
||||
/// </devdoc>
|
||||
public override void WriteLine(string s) {
|
||||
OutputTabs();
|
||||
writer.WriteLine(s);
|
||||
tabsPending = true;
|
||||
}
|
||||
|
||||
/// <devdoc>
|
||||
/// <para>
|
||||
/// Writes a line terminator.
|
||||
/// </para>
|
||||
/// </devdoc>
|
||||
public override void WriteLine() {
|
||||
OutputTabs();
|
||||
writer.WriteLine();
|
||||
tabsPending = true;
|
||||
}
|
||||
|
||||
/// <devdoc>
|
||||
/// <para>
|
||||
/// Writes the text representation of a Boolean followed by a line terminator to
|
||||
/// the text stream.
|
||||
/// </para>
|
||||
/// </devdoc>
|
||||
public override void WriteLine(bool value) {
|
||||
OutputTabs();
|
||||
writer.WriteLine(value);
|
||||
tabsPending = true;
|
||||
}
|
||||
|
||||
/// <devdoc>
|
||||
/// <para>[To be supplied.]</para>
|
||||
/// </devdoc>
|
||||
public override void WriteLine(char value) {
|
||||
OutputTabs();
|
||||
writer.WriteLine(value);
|
||||
tabsPending = true;
|
||||
}
|
||||
|
||||
/// <devdoc>
|
||||
/// <para>[To be supplied.]</para>
|
||||
/// </devdoc>
|
||||
public override void WriteLine(char[] buffer) {
|
||||
OutputTabs();
|
||||
writer.WriteLine(buffer);
|
||||
tabsPending = true;
|
||||
}
|
||||
|
||||
/// <devdoc>
|
||||
/// <para>[To be supplied.]</para>
|
||||
/// </devdoc>
|
||||
public override void WriteLine(char[] buffer, int index, int count) {
|
||||
OutputTabs();
|
||||
writer.WriteLine(buffer, index, count);
|
||||
tabsPending = true;
|
||||
}
|
||||
|
||||
/// <devdoc>
|
||||
/// <para>[To be supplied.]</para>
|
||||
/// </devdoc>
|
||||
public override void WriteLine(double value) {
|
||||
OutputTabs();
|
||||
writer.WriteLine(value);
|
||||
tabsPending = true;
|
||||
}
|
||||
|
||||
/// <devdoc>
|
||||
/// <para>[To be supplied.]</para>
|
||||
/// </devdoc>
|
||||
public override void WriteLine(float value) {
|
||||
OutputTabs();
|
||||
writer.WriteLine(value);
|
||||
tabsPending = true;
|
||||
}
|
||||
|
||||
/// <devdoc>
|
||||
/// <para>[To be supplied.]</para>
|
||||
/// </devdoc>
|
||||
public override void WriteLine(int value) {
|
||||
OutputTabs();
|
||||
writer.WriteLine(value);
|
||||
tabsPending = true;
|
||||
}
|
||||
|
||||
/// <devdoc>
|
||||
/// <para>[To be supplied.]</para>
|
||||
/// </devdoc>
|
||||
public override void WriteLine(long value) {
|
||||
OutputTabs();
|
||||
writer.WriteLine(value);
|
||||
tabsPending = true;
|
||||
}
|
||||
|
||||
/// <devdoc>
|
||||
/// <para>[To be supplied.]</para>
|
||||
/// </devdoc>
|
||||
public override void WriteLine(object value) {
|
||||
OutputTabs();
|
||||
writer.WriteLine(value);
|
||||
tabsPending = true;
|
||||
}
|
||||
|
||||
/// <devdoc>
|
||||
/// <para>[To be supplied.]</para>
|
||||
/// </devdoc>
|
||||
public override void WriteLine(string format, object arg0) {
|
||||
OutputTabs();
|
||||
writer.WriteLine(format, arg0);
|
||||
tabsPending = true;
|
||||
}
|
||||
|
||||
/// <devdoc>
|
||||
/// <para>[To be supplied.]</para>
|
||||
/// </devdoc>
|
||||
public override void WriteLine(string format, object arg0, object arg1) {
|
||||
OutputTabs();
|
||||
writer.WriteLine(format, arg0, arg1);
|
||||
tabsPending = true;
|
||||
}
|
||||
|
||||
/// <devdoc>
|
||||
/// <para>[To be supplied.]</para>
|
||||
/// </devdoc>
|
||||
public override void WriteLine(string format, params object[] arg) {
|
||||
OutputTabs();
|
||||
writer.WriteLine(format, arg);
|
||||
tabsPending = true;
|
||||
}
|
||||
|
||||
/// <devdoc>
|
||||
/// <para>[To be supplied.]</para>
|
||||
/// </devdoc>
|
||||
[CLSCompliant(false)]
|
||||
public override void WriteLine(UInt32 value) {
|
||||
OutputTabs();
|
||||
writer.WriteLine(value);
|
||||
tabsPending = true;
|
||||
}
|
||||
|
||||
internal void InternalOutputTabs() {
|
||||
for (int i=0; i < indentLevel; i++) {
|
||||
writer.Write(tabString);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
internal class Indentation {
|
||||
private IndentedTextWriter writer;
|
||||
private int indent;
|
||||
private string s;
|
||||
|
||||
internal Indentation(IndentedTextWriter writer, int indent) {
|
||||
this.writer = writer;
|
||||
this.indent = indent;
|
||||
s = null;
|
||||
}
|
||||
|
||||
internal string IndentationString {
|
||||
get {
|
||||
if ( s == null) {
|
||||
string tabString = writer.TabString;
|
||||
StringBuilder sb = new StringBuilder(indent * tabString.Length);
|
||||
for( int i = 0; i < indent; i++) {
|
||||
sb.Append(tabString);
|
||||
}
|
||||
s = sb.ToString();
|
||||
}
|
||||
return s;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user