From e8cbeb993457845c857ca0f20f50b5d1d8c86d3b Mon Sep 17 00:00:00 2001 From: Ilya Date: Thu, 28 Oct 2021 10:28:38 +0500 Subject: [PATCH 1/2] Does PSStyle early initialization less expensive --- .../FormatAndOutput/common/PSStyle.cs | 38 ++++++++++++------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/src/System.Management.Automation/FormatAndOutput/common/PSStyle.cs b/src/System.Management.Automation/FormatAndOutput/common/PSStyle.cs index 52ca35dff4b..1f2f379edb4 100644 --- a/src/System.Management.Automation/FormatAndOutput/common/PSStyle.cs +++ b/src/System.Management.Automation/FormatAndOutput/common/PSStyle.cs @@ -35,7 +35,7 @@ public enum ProgressView /// Classic rendering of progress. Classic = 1, } - + #region PSStyle /// /// Contains configuration for how PowerShell renders text. @@ -365,7 +365,7 @@ public string Error get => _error; set => _error = ValidateNoContent(value); } - + private string _error = "\x1b[31;1m"; /// @@ -397,7 +397,7 @@ public string Debug { get => _debug; set => _debug = ValidateNoContent(value); - } + } private string _debug = "\x1b[33;1m"; } @@ -467,6 +467,16 @@ public void Add(string extension, string decoration) _extensionDictionary.Add(ValidateExtension(extension), ValidateNoContent(decoration)); } + /// + /// Add new extension and decoration to dictionary without validation. + /// + /// Extension to add. + /// ANSI string value to add. + internal void AddWithoutValidate(string extension, string decoration) + { + _extensionDictionary.Add(extension, decoration); + } + /// /// Remove an extension from dictionary. /// @@ -543,19 +553,19 @@ public FileInfoFormatting() Extension = new FileExtensionDictionary(); // archives - Extension.Add(".zip", "\x1b[31;1m"); - Extension.Add(".tgz", "\x1b[31;1m"); - Extension.Add(".gz", "\x1b[31;1m"); - Extension.Add(".tar", "\x1b[31;1m"); - Extension.Add(".nupkg", "\x1b[31;1m"); - Extension.Add(".cab", "\x1b[31;1m"); - Extension.Add(".7z", "\x1b[31;1m"); + Extension.AddWithoutValidate(".zip", "\x1b[31;1m"); + Extension.AddWithoutValidate(".tgz", "\x1b[31;1m"); + Extension.AddWithoutValidate(".gz", "\x1b[31;1m"); + Extension.AddWithoutValidate(".tar", "\x1b[31;1m"); + Extension.AddWithoutValidate(".nupkg", "\x1b[31;1m"); + Extension.AddWithoutValidate(".cab", "\x1b[31;1m"); + Extension.AddWithoutValidate(".7z", "\x1b[31;1m"); // powershell - Extension.Add(".ps1", "\x1b[33;1m"); - Extension.Add(".psd1", "\x1b[33;1m"); - Extension.Add(".psm1", "\x1b[33;1m"); - Extension.Add(".ps1xml", "\x1b[33;1m"); + Extension.AddWithoutValidate(".ps1", "\x1b[33;1m"); + Extension.AddWithoutValidate(".psd1", "\x1b[33;1m"); + Extension.AddWithoutValidate(".psm1", "\x1b[33;1m"); + Extension.AddWithoutValidate(".ps1xml", "\x1b[33;1m"); } } From 55a118ea6a4aa4bdbab7cd49094c31525a5e59af Mon Sep 17 00:00:00 2001 From: Ilya Date: Thu, 28 Oct 2021 22:17:17 +0500 Subject: [PATCH 2/2] Address feedback --- .../FormatAndOutput/common/PSStyle.cs | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/System.Management.Automation/FormatAndOutput/common/PSStyle.cs b/src/System.Management.Automation/FormatAndOutput/common/PSStyle.cs index 1f2f379edb4..3a641edc429 100644 --- a/src/System.Management.Automation/FormatAndOutput/common/PSStyle.cs +++ b/src/System.Management.Automation/FormatAndOutput/common/PSStyle.cs @@ -472,7 +472,7 @@ public void Add(string extension, string decoration) /// /// Extension to add. /// ANSI string value to add. - internal void AddWithoutValidate(string extension, string decoration) + internal void AddWithoutValidation(string extension, string decoration) { _extensionDictionary.Add(extension, decoration); } @@ -553,19 +553,19 @@ public FileInfoFormatting() Extension = new FileExtensionDictionary(); // archives - Extension.AddWithoutValidate(".zip", "\x1b[31;1m"); - Extension.AddWithoutValidate(".tgz", "\x1b[31;1m"); - Extension.AddWithoutValidate(".gz", "\x1b[31;1m"); - Extension.AddWithoutValidate(".tar", "\x1b[31;1m"); - Extension.AddWithoutValidate(".nupkg", "\x1b[31;1m"); - Extension.AddWithoutValidate(".cab", "\x1b[31;1m"); - Extension.AddWithoutValidate(".7z", "\x1b[31;1m"); + Extension.AddWithoutValidation(".zip", "\x1b[31;1m"); + Extension.AddWithoutValidation(".tgz", "\x1b[31;1m"); + Extension.AddWithoutValidation(".gz", "\x1b[31;1m"); + Extension.AddWithoutValidation(".tar", "\x1b[31;1m"); + Extension.AddWithoutValidation(".nupkg", "\x1b[31;1m"); + Extension.AddWithoutValidation(".cab", "\x1b[31;1m"); + Extension.AddWithoutValidation(".7z", "\x1b[31;1m"); // powershell - Extension.AddWithoutValidate(".ps1", "\x1b[33;1m"); - Extension.AddWithoutValidate(".psd1", "\x1b[33;1m"); - Extension.AddWithoutValidate(".psm1", "\x1b[33;1m"); - Extension.AddWithoutValidate(".ps1xml", "\x1b[33;1m"); + Extension.AddWithoutValidation(".ps1", "\x1b[33;1m"); + Extension.AddWithoutValidation(".psd1", "\x1b[33;1m"); + Extension.AddWithoutValidation(".psm1", "\x1b[33;1m"); + Extension.AddWithoutValidation(".ps1xml", "\x1b[33;1m"); } } @@ -698,7 +698,7 @@ private PSStyle() private static string ValidateNoContent(string text) { - var decorartedString = new StringDecorated(text); + var decorartedString = new ValueStringDecorated(text); if (decorartedString.ContentLength > 0) { throw new ArgumentException(string.Format(PSStyleStrings.TextContainsContent, decorartedString.ToString(OutputRendering.PlainText)));