/********************************************************************++
Copyright (c) Microsoft Corporation. All rights reserved.
--********************************************************************/
using System.Xml;
using System.Diagnostics.CodeAnalysis; // for fxcop
namespace System.Management.Automation
{
///
///
/// Class GeneralHelpInfo keeps track of help information to be returned by
/// general help provider.
///
///
internal class GeneralHelpInfo : HelpInfo
{
///
/// Constructor for GeneralHelpInfo
///
///
/// This constructor is can be called only from constructors of derived class
/// for GeneralHelpInfo. The only way to to create a GeneralHelpInfo is through
/// static function
/// Load(XmlNode node)
/// where some sanity check is done.
///
[SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors", Justification = "This is internal and the code path is verified.")]
protected GeneralHelpInfo(XmlNode xmlNode)
{
MamlNode mamlNode = new MamlNode(xmlNode);
_fullHelpObject = mamlNode.PSObject;
this.Errors = mamlNode.Errors;
_fullHelpObject.TypeNames.Clear();
_fullHelpObject.TypeNames.Add(string.Format(Globalization.CultureInfo.InvariantCulture,
"GeneralHelpInfo#{0}", Name));
_fullHelpObject.TypeNames.Add("GeneralHelpInfo");
_fullHelpObject.TypeNames.Add("HelpInfo");
}
#region Basic Help Properties
///
/// Name of help content.
///
/// Name of help content
internal override string Name
{
get
{
if (_fullHelpObject == null)
return "";
if (_fullHelpObject.Properties["Title"] == null)
return "";
if (_fullHelpObject.Properties["Title"].Value == null)
return "";
string name = _fullHelpObject.Properties["Title"].Value.ToString();
if (name == null)
return "";
return name.Trim();
}
}
///
/// Synopsis for this general help.
///
/// Synopsis for this general help
internal override string Synopsis
{
get
{
return "";
}
}
///
/// Help category for this general help, which is constantly HelpCategory.General.
///
/// Help category for general help
internal override HelpCategory HelpCategory
{
get
{
return HelpCategory.General;
}
}
private PSObject _fullHelpObject;
///
/// Full help object for this help item.
///
/// Full help object for this help item.
internal override PSObject FullHelp
{
get
{
return _fullHelpObject;
}
}
#endregion
#region Load
///
/// Create a GeneralHelpInfo object from an XmlNode.
///
/// xmlNode that contains help info
/// GeneralHelpInfo object created
internal static GeneralHelpInfo Load(XmlNode xmlNode)
{
GeneralHelpInfo generalHelpInfo = new GeneralHelpInfo(xmlNode);
if (String.IsNullOrEmpty(generalHelpInfo.Name))
return null;
generalHelpInfo.AddCommonHelpProperties();
return generalHelpInfo;
}
#endregion
}
}