MegaBites-AI/Windows-powershell
0372
1// Copyright (c) Microsoft Corporation.2// Licensed under the MIT License.3 4using System.Xml;5 6namespace System.Management.Automation7{8 /// <summary>9 /// Class MamlClassHelpInfo keeps track of help information to be returned by10 /// class help provider.11 /// </summary>12 internal class MamlClassHelpInfo : HelpInfo13 {14 /// <summary>15 /// Constructor for custom HelpInfo object creation.16 /// </summary>17 /// <param name="helpObject"></param>18 /// <param name="helpCategory"></param>19 internal MamlClassHelpInfo(PSObject helpObject, HelpCategory helpCategory)20 {21 HelpCategory = helpCategory;22 _fullHelpObject = helpObject;23 }24 25 /// <summary>26 /// Convert a XMLNode to HelpInfo object.27 /// </summary>28 /// <param name="xmlNode"></param>29 /// <param name="helpCategory"></param>30 private MamlClassHelpInfo(XmlNode xmlNode, HelpCategory helpCategory)31 {32 HelpCategory = helpCategory;33 34 MamlNode mamlNode = new MamlNode(xmlNode);35 _fullHelpObject = mamlNode.PSObject;36 37 this.Errors = mamlNode.Errors;38 _fullHelpObject.TypeNames.Clear();39 _fullHelpObject.TypeNames.Add("PSClassHelpInfo");40 }41 42 /// <summary>43 /// PSObject representation on help.44 /// </summary>45 private readonly PSObject _fullHelpObject;46 47 #region Load48 49 /// <summary>50 /// Create a MamlClassHelpInfo object from an XmlNode.51 /// </summary>52 /// <param name="xmlNode">XmlNode that contains help info.</param>53 /// <param name="helpCategory">Help category this maml object fits into.</param>54 /// <returns>MamlCommandHelpInfo object created.</returns>55 internal static MamlClassHelpInfo Load(XmlNode xmlNode, HelpCategory helpCategory)56 {57 MamlClassHelpInfo mamlClassHelpInfo = new MamlClassHelpInfo(xmlNode, helpCategory);58 59 if (string.IsNullOrEmpty(mamlClassHelpInfo.Name))60 return null;61 62 mamlClassHelpInfo.AddCommonHelpProperties();63 64 return mamlClassHelpInfo;65 }66 67 #endregion68 69 #region Helper Methods and Overloads70 71 /// <summary>72 /// Clone the help info object.73 /// </summary>74 /// <returns>MamlClassHelpInfo object.</returns>75 internal MamlClassHelpInfo Copy()76 {77 MamlClassHelpInfo result = new MamlClassHelpInfo(_fullHelpObject.Copy(), this.HelpCategory);78 return result;79 }80 81 /// <summary>82 /// Clone the help object with a new category.83 /// </summary>84 /// <param name="newCategoryToUse"></param>85 /// <returns>MamlClassHelpInfo.</returns>86 internal MamlClassHelpInfo Copy(HelpCategory newCategoryToUse)87 {88 MamlClassHelpInfo result = new MamlClassHelpInfo(_fullHelpObject.Copy(), newCategoryToUse);89 result.FullHelp.Properties["Category"].Value = newCategoryToUse.ToString();90 return result;91 }92 93 internal override string Name94 {95 get96 {97 string tempName = string.Empty;98 var title = _fullHelpObject.Properties["title"];99 100 if (title != null && title.Value != null)101 {102 tempName = title.Value.ToString();103 }104 105 return tempName;106 }107 }108 109 internal override string Synopsis110 {111 get112 {113 string tempSynopsis = string.Empty;114 var intro = _fullHelpObject.Properties["introduction"];115 116 if (intro != null && intro.Value != null)117 {118 tempSynopsis = intro.Value.ToString();119 }120 121 return tempSynopsis;122 }123 }124 125 internal override HelpCategory HelpCategory { get; }126 127 internal override PSObject FullHelp128 {129 get { return _fullHelpObject; }130 }131 132 #endregion133 }134}135 