Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/addins/TextTemplating/Mono.TextTemplating/Microsoft.VisualStudio.TextTemplating/TextTransformation.cs')
-rw-r--r--main/src/addins/TextTemplating/Mono.TextTemplating/Microsoft.VisualStudio.TextTemplating/TextTransformation.cs216
1 files changed, 0 insertions, 216 deletions
diff --git a/main/src/addins/TextTemplating/Mono.TextTemplating/Microsoft.VisualStudio.TextTemplating/TextTransformation.cs b/main/src/addins/TextTemplating/Mono.TextTemplating/Microsoft.VisualStudio.TextTemplating/TextTransformation.cs
deleted file mode 100644
index f6a597752d..0000000000
--- a/main/src/addins/TextTemplating/Mono.TextTemplating/Microsoft.VisualStudio.TextTemplating/TextTransformation.cs
+++ /dev/null
@@ -1,216 +0,0 @@
-//
-// TextTransformation.cs
-//
-// Author:
-// Michael Hutchinson <mhutchinson@novell.com>
-//
-// Copyright (c) 2009 Novell, Inc. (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-using System;
-using System.CodeDom.Compiler;
-using System.Collections.Generic;
-using System.Text;
-
-namespace Microsoft.VisualStudio.TextTemplating
-{
- public abstract class TextTransformation : IDisposable
- {
- Stack<int> indents;
- string currentIndent = string.Empty;
- CompilerErrorCollection errors;
- StringBuilder builder;
- bool endsWithNewline;
-
- public TextTransformation ()
- {
- }
-
- public virtual void Initialize ()
- {
- }
-
- public abstract string TransformText ();
-
- public virtual IDictionary<string, object> Session { get; set; }
-
- #region Errors
-
- public void Error (string message)
- {
- Errors.Add (new CompilerError ("", 0, 0, "", message));
- }
-
- public void Warning (string message)
- {
- Errors.Add (new CompilerError ("", 0, 0, "", message) { IsWarning = true });
- }
-
- protected internal CompilerErrorCollection Errors {
- get {
- if (errors == null)
- errors = new CompilerErrorCollection ();
- return errors;
- }
- }
-
- Stack<int> Indents {
- get {
- if (indents == null)
- indents = new Stack<int> ();
- return indents;
- }
- }
-
- #endregion
-
- #region Indents
-
- public string PopIndent ()
- {
- if (Indents.Count == 0)
- return "";
- int lastPos = currentIndent.Length - Indents.Pop ();
- string last = currentIndent.Substring (lastPos);
- currentIndent = currentIndent.Substring (0, lastPos);
- return last;
- }
-
- public void PushIndent (string indent)
- {
- if (indent == null)
- throw new ArgumentNullException ("indent");
- Indents.Push (indent.Length);
- currentIndent += indent;
- }
-
- public void ClearIndent ()
- {
- currentIndent = string.Empty;
- Indents.Clear ();
- }
-
- public string CurrentIndent {
- get { return currentIndent; }
- }
-
- #endregion
-
- #region Writing
-
- protected StringBuilder GenerationEnvironment {
- get {
- if (builder == null)
- builder = new StringBuilder ();
- return builder;
- }
- set {
- builder = value;
- }
- }
-
- public void Write (string textToAppend)
- {
- if (string.IsNullOrEmpty (textToAppend))
- return;
-
- if ((GenerationEnvironment.Length == 0 || endsWithNewline) && CurrentIndent.Length > 0) {
- GenerationEnvironment.Append (CurrentIndent);
- }
- endsWithNewline = false;
-
- char last = textToAppend[textToAppend.Length-1];
- if (last == '\n' || last == '\r') {
- endsWithNewline = true;
- }
-
- if (CurrentIndent.Length == 0) {
- GenerationEnvironment.Append (textToAppend);
- return;
- }
-
- //insert CurrentIndent after every newline (\n, \r, \r\n)
- //but if there's one at the end of the string, ignore it, it'll be handled next time thanks to endsWithNewline
- int lastNewline = 0;
- for (int i = 0; i < textToAppend.Length - 1; i++) {
- char c = textToAppend[i];
- if (c == '\r') {
- if (textToAppend[i + 1] == '\n') {
- i++;
- if (i == textToAppend.Length - 1)
- break;
- }
- } else if (c != '\n') {
- continue;
- }
- i++;
- int len = i - lastNewline;
- if (len > 0) {
- GenerationEnvironment.Append (textToAppend, lastNewline, i - lastNewline);
- }
- GenerationEnvironment.Append (CurrentIndent);
- lastNewline = i;
- }
- if (lastNewline > 0)
- GenerationEnvironment.Append (textToAppend, lastNewline, textToAppend.Length - lastNewline);
- else
- GenerationEnvironment.Append (textToAppend);
- }
-
- public void Write (string format, params object[] args)
- {
- Write (string.Format (format, args));
- }
-
- public void WriteLine (string textToAppend)
- {
- Write (textToAppend);
- GenerationEnvironment.AppendLine ();
- endsWithNewline = true;
- }
-
- public void WriteLine (string format, params object[] args)
- {
- WriteLine (string.Format (format, args));
- }
-
- #endregion
-
- #region Dispose
-
- public void Dispose ()
- {
- Dispose (true);
- GC.SuppressFinalize (this);
- }
-
- protected virtual void Dispose (bool disposing)
- {
- }
-
- ~TextTransformation ()
- {
- Dispose (false);
- }
-
- #endregion
-
- }
-}