/// <summary> /// Recursive call to display an object. /// </summary> /// <param name="so">Object to display.</param> /// <param name="currentLevel">Current level in the traversal.</param> /// <param name="parameterList">List of parameters from the command line.</param> /// <param name="formatValueList">List of format tokens to add to.</param> private void DisplayObject(PSObject so, TraversalInfo currentLevel, List<MshParameter> parameterList, List<FormatValue> formatValueList) { // resolve the names of the properties List<MshResolvedExpressionParameterAssociation> activeAssociationList = AssociationManager.SetupActiveProperties(parameterList, so, _expressionFactory); // create a format entry FormatEntry fe = new FormatEntry(); formatValueList.Add(fe); // add the display name of the object string objectDisplayName = GetObjectDisplayName(so); if (objectDisplayName != null) objectDisplayName = "class " + objectDisplayName; AddPrologue(fe.formatValueList, "{", objectDisplayName); ProcessActiveAssociationList(so, currentLevel, activeAssociationList, AddIndentationLevel(fe.formatValueList)); AddEpilogue(fe.formatValueList, "}"); }
private void SetUpActiveProperty(PSObject so) { List <MshParameter> rawMshParameterList = null; if (this.inputParameters != null) { rawMshParameterList = this.inputParameters.mshParameterList; } // check if we received properties from the command line if (rawMshParameterList != null && rawMshParameterList.Count > 0) { this.activeAssociationList = AssociationManager.ExpandParameters(rawMshParameterList, so); return; } // we did not get any properties: //try to get the display property of the object MshExpression displayNameExpression = PSObjectHelper.GetDisplayNameExpression(so, this.expressionFactory); if (displayNameExpression != null) { this.activeAssociationList = new List <MshResolvedExpressionParameterAssociation>(); this.activeAssociationList.Add(new MshResolvedExpressionParameterAssociation(null, displayNameExpression)); return; } // try to get the default property set (we will use the first property) this.activeAssociationList = AssociationManager.ExpandDefaultPropertySet(so, this.expressionFactory); if (this.activeAssociationList.Count > 0) { // we got a valid set of properties from the default property set return; } // we failed to get anything from the default property set // just get all the properties this.activeAssociationList = AssociationManager.ExpandAll(so); }
private static Microsoft.PowerShell.Commands.Internal.Format.ViewGenerator SelectViewGeneratorFromProperties(FormatShape shape, PSObject so, TerminatingErrorContext errorContext, MshExpressionFactory expressionFactory, TypeInfoDataBase db, FormattingCommandLineParameters parameters) { if ((shape == FormatShape.Undefined) && (parameters == null)) { ConsolidatedString internalTypeNames = so.InternalTypeNames; shape = DisplayDataQuery.GetShapeFromType(expressionFactory, db, internalTypeNames); if (shape == FormatShape.Undefined) { List <MshExpression> defaultPropertySet = PSObjectHelper.GetDefaultPropertySet(so); if (defaultPropertySet.Count == 0) { foreach (MshResolvedExpressionParameterAssociation association in AssociationManager.ExpandAll(so)) { defaultPropertySet.Add(association.ResolvedExpression); } } shape = DisplayDataQuery.GetShapeFromPropertyCount(db, defaultPropertySet.Count); } } Microsoft.PowerShell.Commands.Internal.Format.ViewGenerator generator = null; if (shape == FormatShape.Table) { generator = new TableViewGenerator(); } else if (shape == FormatShape.List) { generator = new ListViewGenerator(); } else if (shape == FormatShape.Wide) { generator = new WideViewGenerator(); } else if (shape == FormatShape.Complex) { generator = new ComplexViewGenerator(); } generator.Initialize(errorContext, expressionFactory, so, db, parameters); return(generator); }