Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Unified Diff: obsolete/Microsoft.VisualStudio.Project/TokenProcessor.cs

Issue 10928195: First round of dead file removal (Closed) Base URL: https://github.com/samclegg/nativeclient-sdk.git@master
Patch Set: Created 8 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: obsolete/Microsoft.VisualStudio.Project/TokenProcessor.cs
diff --git a/obsolete/Microsoft.VisualStudio.Project/TokenProcessor.cs b/obsolete/Microsoft.VisualStudio.Project/TokenProcessor.cs
deleted file mode 100644
index 6a24a6f4b12ce87c45dee445b26a98542e5fc239..0000000000000000000000000000000000000000
--- a/obsolete/Microsoft.VisualStudio.Project/TokenProcessor.cs
+++ /dev/null
@@ -1,489 +0,0 @@
-/// Copyright (c) Microsoft Corporation. All rights reserved.
-
-using System;
-using System.Collections;
-using System.Diagnostics;
-using System.Diagnostics.CodeAnalysis;
-using System.Globalization;
-using System.IO;
-using System.Text;
-
-namespace Microsoft.VisualStudio.Project
-{
- /// <summary>
- /// Replacement type
- /// </summary>
- public enum TokenReplaceType
- {
- ReplaceString,
- ReplaceNumber,
- ReplaceCode
- }
-
- /// <summary>
- /// Contain a number of functions that handle token replacement
- /// </summary>
- [CLSCompliant(false)]
- public class TokenProcessor
- {
- #region fields
- // Internal fields
- private ArrayList tokenlist;
-
-
- #endregion
-
- #region Initialization
- /// <summary>
- /// Constructor
- /// </summary>
- public TokenProcessor()
- {
- tokenlist = new ArrayList();
- }
-
- /// <summary>
- /// Reset list of TokenReplacer entries
- /// </summary>
- public virtual void Reset()
- {
- tokenlist.Clear();
- }
-
-
- /// <summary>
- /// Add a replacement type entry
- /// </summary>
- /// <param name="token">token to replace</param>
- /// <param name="replacement">replacement string</param>
- public virtual void AddReplace(string token, string replacement)
- {
- tokenlist.Add(new ReplacePairToken(token, replacement));
- }
-
- /// <summary>
- /// Add replace between entry
- /// </summary>
- /// <param name="tokenStart">Start token</param>
- /// <param name="tokenEnd">End token</param>
- [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "tokenid")]
- public virtual void AddReplaceBetween(string tokenid, string tokenStart, string tokenEnd, string replacement)
- {
- tokenlist.Add(new ReplaceBetweenPairToken(tokenid, tokenStart, tokenEnd, replacement));
- }
-
- /// <summary>
- /// Add a deletion entry
- /// </summary>
- /// <param name="tokenToDelete">Token to delete</param>
- public virtual void AddDelete(string tokenToDelete)
- {
- tokenlist.Add(new DeleteToken(tokenToDelete));
- }
- #endregion
-
- #region TokenProcessing
- /// <summary>
- /// For all known token, replace token with correct value
- /// </summary>
- /// <param name="source">File of the source file</param>
- /// <param name="destination">File of the destination file</param>
- [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily"), SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Untoken")]
- public virtual void UntokenFile(string source, string destination)
- {
- if(string.IsNullOrEmpty(source))
- throw new ArgumentNullException("source");
-
- if(string.IsNullOrEmpty(destination))
- throw new ArgumentNullException("destination");
-
- // Make sure that the destination folder exists.
- string destinationFolder = Path.GetDirectoryName(destination);
- if(!Directory.Exists(destinationFolder))
- {
- Directory.CreateDirectory(destinationFolder);
- }
-
- //Open the file. Check to see if the File is binary or text.
- // NOTE: This is not correct because GetBinaryType will return true
- // only if the file is executable, not if it is a dll, a library or
- // any other type of binary file.
-
- uint binaryType;
- if(!NativeMethods.GetBinaryType(source, out binaryType))
- {
- Encoding encoding = Encoding.Default;
- string buffer = null;
- // Create the reader to get the text. Note that we will default to ASCII as
- // encoding if the file does not contains a different signature.
- using(StreamReader reader = new StreamReader(source, Encoding.ASCII, true))
- {
- // Get the content of the file.
- buffer = reader.ReadToEnd();
- // Detect the encoding of the source file. Note that we
- // can get the encoding only after a read operation is
- // performed on the file.
- encoding = reader.CurrentEncoding;
- }
- foreach(object pair in tokenlist)
- {
- if(pair is DeleteToken)
- DeleteTokens(ref buffer, (DeleteToken)pair);
- if(pair is ReplaceBetweenPairToken)
- ReplaceBetweenTokens(ref buffer, (ReplaceBetweenPairToken)pair);
- if(pair is ReplacePairToken)
- ReplaceTokens(ref buffer, (ReplacePairToken)pair);
- }
- File.WriteAllText(destination, buffer, encoding);
- }
- else
- File.Copy(source, destination);
-
- }
-
- /// <summary>
- /// Replaces the tokens in a buffer with the replacement string
- /// </summary>
- /// <param name="buffer">Buffer to update</param>
- /// <param name="tokenToReplace">replacement data</param>
- public virtual void ReplaceTokens(ref string buffer, ReplacePairToken tokenToReplace)
- {
- buffer = buffer.Replace(tokenToReplace.Token, tokenToReplace.Replacement);
- }
-
- /// <summary>
- /// Deletes the token from the buffer
- /// </summary>
- /// <param name="buffer">Buffer to update</param>
- /// <param name="tokenToDelete">token to delete</param>
- public virtual void DeleteTokens(ref string buffer, DeleteToken tokenToDelete)
- {
- buffer = buffer.Replace(tokenToDelete.StringToDelete, string.Empty);
- }
-
- /// <summary>
- /// Replaces the token from the buffer between the provided tokens
- /// </summary>
- /// <param name="buffer">Buffer to update</param>
- /// <param name="rpBetweenToken">replacement token</param>
- public virtual void ReplaceBetweenTokens(ref string buffer, ReplaceBetweenPairToken rpBetweenToken)
- {
- string regularExp = rpBetweenToken.TokenStart + "[^" + rpBetweenToken.TokenIdentifier + "]*" + rpBetweenToken.TokenEnd;
- buffer = System.Text.RegularExpressions.Regex.Replace(buffer, regularExp, rpBetweenToken.TokenReplacement);
- }
-
- #endregion
-
- #region Guid generators
- /// <summary>
- /// Generates a string representation of a guid with the following format:
- /// 0x01020304, 0x0506, 0x0708, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10
- /// </summary>
- /// <param name="value">Guid to be generated</param>
- /// <returns>The guid as string</returns>
- [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1822:MarkMembersAsStatic")]
- public string GuidToForm1(Guid value)
- {
- byte[] GuidBytes = value.ToByteArray();
- StringBuilder ResultingStr = new StringBuilder(80);
-
- // First 4 bytes
- int i = 0;
- int Number = 0;
- for(i = 0; i < 4; ++i)
- {
- int CurrentByte = GuidBytes[i];
- Number += CurrentByte << (8 * i);
- }
- UInt32 FourBytes = (UInt32)Number;
- ResultingStr.AppendFormat(CultureInfo.InvariantCulture, "0x{0}", FourBytes.ToString("X", CultureInfo.InvariantCulture));
-
- // 2 chunks of 2 bytes
- for(int j = 0; j < 2; ++j)
- {
- Number = 0;
- for(int k = 0; k < 2; ++k)
- {
- int CurrentByte = GuidBytes[i++];
- Number += CurrentByte << (8 * k);
- }
- UInt16 TwoBytes = (UInt16)Number;
- ResultingStr.AppendFormat(CultureInfo.InvariantCulture, ", 0x{0}", TwoBytes.ToString("X", CultureInfo.InvariantCulture));
- }
-
- // 8 chunks of 1 bytes
- for(int j = 0; j < 8; ++j)
- {
- ResultingStr.AppendFormat(CultureInfo.InvariantCulture, ", 0x{0}", GuidBytes[i++].ToString("X", CultureInfo.InvariantCulture));
- }
-
- return ResultingStr.ToString();
- }
- #endregion
-
- #region Helper Methods
- /// <summary>
- /// This function will accept a subset of the characters that can create an
- /// identifier name: there are other unicode char that can be inside the name, but
- /// this function will not allow. By now it can work this way, but when and if the
- /// VSIP package will handle also languages different from english, this function
- /// must be changed.
- /// </summary>
- /// <param name="c">Character to validate</param>
- /// <returns>true if successful false otherwise</returns>
- [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "c")]
- protected static bool IsValidIdentifierChar(char c)
- {
- if((c >= 'a') && (c <= 'z'))
- {
- return true;
- }
- if((c >= 'A') && (c <= 'Z'))
- {
- return true;
- }
- if(c == '_')
- {
- return true;
- }
- if((c >= '0') && (c <= '9'))
- {
- return true;
- }
-
- return false;
- }
-
- /// <summary>
- /// Verifies if the start character is valid
- /// </summary>
- /// <param name="c">Start character</param>
- /// <returns>true if successful false otherwise</returns>
- [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "c")]
- protected static bool IsValidIdentifierStartChar(char c)
- {
- if(!IsValidIdentifierChar(c))
- {
- return false;
- }
- if((c >= '0') && (c <= '9'))
- {
- return false;
- }
-
- return true;
- }
-
- /// <summary>
- /// The goal here is to reduce the risk of name conflict between 2 classes
- /// added in different directories. This code does NOT garanty uniqueness.
- /// To garanty uniqueness, you should change this function to work with
- /// the language service to verify that the namespace+class generated does
- /// not conflict.
- /// </summary>
- /// <param name="fileFullPath">Full path to the new file</param>
- /// <returns>Namespace to use for the new file</returns>
- [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1822:MarkMembersAsStatic")]
- public string GetFileNamespace(string fileFullPath, ProjectNode node)
- {
- // Get base namespace from the project
- string namespce = node.GetProjectProperty("RootNamespace");
- if(String.IsNullOrEmpty(namespce))
- namespce = Path.GetFileNameWithoutExtension(fileFullPath); ;
-
- // If the item is added to a subfolder, the name space should reflect this.
- // This is done so that class names from 2 files with the same name but different
- // directories don't conflict.
- string relativePath = Path.GetDirectoryName(fileFullPath);
- string projectPath = Path.GetDirectoryName(node.GetMkDocument());
- // Our project system only support adding files that are sibling of the project file or that are in subdirectories.
- if(String.Compare(projectPath, 0, relativePath, 0, projectPath.Length, true, CultureInfo.CurrentCulture) == 0)
- {
- relativePath = relativePath.Substring(projectPath.Length);
- }
- else
- {
- Debug.Fail("Adding an item to the project that is NOT under the project folder.");
- // We are going to use the full file path for generating the namespace
- }
-
- // Get the list of parts
- int index = 0;
- string[] pathParts;
- pathParts = relativePath.Split(Path.DirectorySeparatorChar);
-
- // Use a string builder with default size being the expected size
- StringBuilder result = new StringBuilder(namespce, namespce.Length + relativePath.Length + 1);
- // For each path part
- while(index < pathParts.Length)
- {
- string part = pathParts[index];
- ++index;
-
- // This could happen if the path had leading/trailing slash, we want to ignore empty pieces
- if(String.IsNullOrEmpty(part))
- continue;
-
- // If we reach here, we will be adding something, so add a namespace separator '.'
- result.Append('.');
-
- // Make sure it starts with a letter
- if(!char.IsLetter(part, 0))
- result.Append('N');
-
- // Filter invalid namespace characters
- foreach(char c in part)
- {
- if(char.IsLetterOrDigit(c))
- result.Append(c);
- }
- }
- return result.ToString();
- }
- #endregion
-
- }
-
- /// <summary>
- /// Storage classes for replacement tokens
- /// </summary>
- public class ReplacePairToken
- {
- /// <summary>
- /// token string
- /// </summary>
- private string token;
-
- /// <summary>
- /// Replacement string
- /// </summary>
- private string replacement;
-
- /// <summary>
- /// Constructor
- /// </summary>
- /// <param name="token">replaceable token</param>
- /// <param name="replacement">replacement string</param>
- public ReplacePairToken(string token, string replacement)
- {
- this.token = token;
- this.replacement = replacement;
- }
-
- /// <summary>
- /// Token that needs to be replaced
- /// </summary>
- public string Token
- {
- get { return token; }
- }
- /// <summary>
- /// String to replace the token with
- /// </summary>
- public string Replacement
- {
- get { return replacement; }
- }
- }
-
- /// <summary>
- /// Storage classes for token to be deleted
- /// </summary>
- public class DeleteToken
- {
- /// <summary>
- /// String to delete
- /// </summary>
- private string token;
-
- /// <summary>
- /// Constructor
- /// </summary>
- /// <param name="token">Deletable token.</param>
- public DeleteToken(string token)
- {
- this.token = token;
- }
-
- /// <summary>
- /// Token marking the end of the block to delete
- /// </summary>
- public string StringToDelete
- {
- get { return token; }
- }
- }
-
- /// <summary>
- /// Storage classes for string to be deleted between tokens to be deleted
- /// </summary>
- public class ReplaceBetweenPairToken
- {
- /// <summary>
- /// Token start
- /// </summary>
- private string tokenStart;
-
- /// <summary>
- /// End token
- /// </summary>
- private string tokenEnd;
-
- /// <summary>
- /// Replacement string
- /// </summary>
- private string replacement;
-
- /// <summary>
- /// Token identifier string
- /// </summary>
- private string tokenidentifier;
-
- /// <summary>
- /// Constructor
- /// </summary>
- /// <param name="blockStart">Start token</param>
- /// <param name="blockEnd">End Token</param>
- /// <param name="replacement">Replacement string.</param>
- [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "tokenid")]
- public ReplaceBetweenPairToken(string tokenid, string blockStart, string blockEnd, string replacement)
- {
- tokenStart = blockStart;
- tokenEnd = blockEnd;
- this.replacement = replacement;
- tokenidentifier = tokenid;
- }
-
- /// <summary>
- /// Token marking the begining of the block to delete
- /// </summary>
- public string TokenStart
- {
- get { return tokenStart; }
- }
-
- /// <summary>
- /// Token marking the end of the block to delete
- /// </summary>
- public string TokenEnd
- {
- get { return tokenEnd; }
- }
-
- /// <summary>
- /// Token marking the end of the block to delete
- /// </summary>
- public string TokenReplacement
- {
- get { return replacement; }
- }
-
- /// <summary>
- /// Token Identifier
- /// </summary>
- public string TokenIdentifier
- {
- get { return tokenidentifier; }
- }
- }
-}
« no previous file with comments | « obsolete/Microsoft.VisualStudio.Project/SuspendFileChanges.cs ('k') | obsolete/Microsoft.VisualStudio.Project/Tracing.cs » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698