Beispiel #1
0
            /// <summary>
            /// Gets the related information required to create <see cref="Reference"/> objects from the specified intrinsic.
            /// </summary>
            /// <param name="intrinsic">The intrinsic.</param>
            /// <param name="currentPath">Location within CloudFormation resource of this intrinsic</param>
            /// <returns>An <see cref="IntrinsicInfo"/> object.</returns>
            /// <exception cref="Amazon.CloudFormation.Model.InvalidOperationException">Can't currently describe {intrinsic.TagName}</exception>
            private IntrinsicInfo GetIntrinsicInfo(IIntrinsic intrinsic, PropertyPath currentPath)
            {
                // ReSharper disable once SwitchStatementHandlesSomeKnownEnumValuesWithDefault
                switch (intrinsic.Type)
                {
                case IntrinsicType.If:

                    return(new IfIntrinsicInfo(currentPath, intrinsic, null, intrinsic.Evaluate(this.template)));

                case IntrinsicType.Ref:

                    return(this.ProcessRef((RefIntrinsic)intrinsic, currentPath));

                case IntrinsicType.GetAtt:

                    return(this.ProcessGetAtt((GetAttIntrinsic)intrinsic, currentPath));

                case IntrinsicType.Base64:
                case IntrinsicType.Cidr:
                case IntrinsicType.FindInMap:
                case IntrinsicType.Join:
                case IntrinsicType.Select:
                case IntrinsicType.Split:
                case IntrinsicType.Sub:

                    return(new IntrinsicInfo(currentPath, intrinsic, null, intrinsic.Evaluate(this.template)));

                case IntrinsicType.ImportValue:

                    return(this.ProcessImportValue((ImportValueIntrinsic)intrinsic, currentPath));

                default:

                    throw new UnreferenceableIntrinsicWarning(
                              intrinsic,
                              this.currentCloudFormationResource,
                              currentPath);
                }
            }