//---------------------------------------------------------------------
//
// Portions of this file copyright (c) Microsoft Corporation
// and are released under the Microsoft Pulic License. See
// http://archive.msdn.microsoft.com/EFSampleProvider/Project/License.aspx
// or License.txt for details.
// All rights reserved.
//
//---------------------------------------------------------------------
#if USE_ENTITY_FRAMEWORK_6
namespace System.Data.SQLite.EF6
#else
namespace System.Data.SQLite.Linq
#endif
{
using System.IO;
using System.Text;
///
/// This extends StringWriter primarily to add the ability to add an indent
/// to each line that is written out.
///
class SqlWriter : StringWriter
{
// We start at -1, since the first select statement will increment it to 0.
int indent = -1;
///
/// The number of tabs to be added at the beginning of each new line.
///
internal int Indent
{
get { return indent; }
set { indent = value; }
}
bool atBeginningOfLine = true;
///
///
///
///
public SqlWriter(StringBuilder b)
: base(b, System.Globalization.CultureInfo.InvariantCulture)
{
}
///
/// Reset atBeginningofLine if we detect the newline string.
///
/// Add as many tabs as the value of indent if we are at the
/// beginning of a line.
///
///
public override void Write(string value)
{
if (value == "\r\n")
{
base.WriteLine();
atBeginningOfLine = true;
}
else
{
if (atBeginningOfLine)
{
if (indent > 0)
{
base.Write(new string('\t', indent));
}
atBeginningOfLine = false;
}
base.Write(value);
}
}
///
///
///
public override void WriteLine()
{
base.WriteLine();
atBeginningOfLine = true;
}
}
}