コード例 #1
0
        string GetPageBaseNameForIndexer(Property property, DataType dataType, bool addDataTypeName)
        {
            if (property.Parameters.Length < 1)
            {
                throw new ArgumentException("Expected indexer to have at least one parameter", nameof(property));
            }

            var type = new EntityNaming().GetIndexTitle(property.Parameters[0].Type);

            return(addDataTypeName
                           ? dataType.Name + "[" + type + "]"
                           : "[" + type + "]");
        }
コード例 #2
0
ファイル: SyntaxGenerator.cs プロジェクト: kusma/uno
        protected string BuildAttributes(NewObject[] attributes, Namescope context)
        {
            var result = new List <string>();

            foreach (var attribute in attributes)
            {
                var sb            = new StringBuilder("[");
                var attributeName = new EntityNaming().GetFullIndexTitle(attribute.ReturnType);
                if (attributeName.EndsWith("Attribute"))
                {
                    attributeName = attributeName.Substring(0, attributeName.Length - "Attribute".Length);
                }
                sb.Append(attributeName);

                if (attribute.Arguments.Length > 0)
                {
                    sb.Append("(");

                    for (var i = 0; i < attribute.Arguments.Length; i++)
                    {
                        var arg   = (Constant)attribute.Arguments[i];
                        var param = attribute.Constructor.Parameters[i];

                        if (i > 0)
                        {
                            sb.Append(", ");
                        }
                        sb.Append(param.Name);
                        sb.Append(" = ");
                        if (arg.Value is string)
                        {
                            sb.Append("\"" + arg.Value + "\"");
                        }
                        else
                        {
                            sb.Append(arg.Value);
                        }
                    }

                    sb.Append(")");
                }

                sb.AppendLine("]");
                result.Add(sb.ToString());
            }

            return(result.Any()
                           ? string.Join("\n", result)
                           : null);
        }
コード例 #3
0
        string GetPageBaseNameForOperator(Operator op)
        {
            if (op.Parameters.Length < 1)
            {
                throw new ArgumentException("Expected operator " + op.FullName + " to have at least one parameter", nameof(op));
            }
            if (!OperatorSymbolMap.ContainsKey(op.Name))
            {
                throw new ArgumentException("Unknown operator type " + op.Name, nameof(op));
            }

            var leftSide  = new EntityNaming().GetIndexTitle(op.Parameters[0].Type);
            var rightSide = op.Parameters.Length > 1
                                    ? new EntityNaming().GetIndexTitle(op.Parameters[1].Type)
                                    : null;
            var operatorName = OperatorSymbolMap[op.Name];

            return(rightSide == null
                           ? operatorName + " " + leftSide
                           : leftSide + " " + operatorName + " " + rightSide);
        }
コード例 #4
0
        string BuildExplicitImplementationPrefix(Member member)
        {
            var propertyMember = member as Property;
            var methodMember   = member as Method;
            var eventMember    = member as Event;

            if (propertyMember?.ImplementedProperty != null)
            {
                return(EntityNaming.GetFullIndexTitle(propertyMember.ImplementedProperty.DeclaringType) + ".");
            }
            if (methodMember?.ImplementedMethod != null)
            {
                return(EntityNaming.GetFullIndexTitle(methodMember.ImplementedMethod.DeclaringType) + ".");
            }
            if (eventMember?.ImplementedEvent != null)
            {
                return(EntityNaming.GetFullIndexTitle(eventMember.ImplementedEvent.DeclaringType) + ".");
            }

            return(null);
        }
コード例 #5
0
        string GetPageBaseNameForCast(Cast cast, bool shortVersion)
        {
            if (cast.Parameters.Length < 1)
            {
                throw new ArgumentException("Expected cast " + cast.FullName + " to have at least one parameter", nameof(cast));
            }
            if (cast.ReturnType == null)
            {
                throw new ArgumentException("Expected cast " + cast.FullName + " to have a return type", nameof(cast));
            }

            var implicitSuffix = shortVersion ? "(implicit)" : "Implicit";
            var explicitSuffix = shortVersion ? "(explicit)" : "Explicit";

            var from = new EntityNaming().GetIndexTitle(cast.Parameters[0].Type);
            var to   = new EntityNaming().GetIndexTitle(cast.ReturnType);
            var explicitOrImplicit = cast.Name == "op_Implicit" ? implicitSuffix : explicitSuffix;

            return(shortVersion
                           ? to + " " + explicitOrImplicit
                           : from + " to " + to + " " + explicitOrImplicit);
        }