示例#1
0
        private static void WritePropertyDeclaration(DataClassWriter writer, Property property)
        {
            if (property.CustomImpl)
            {
                return;
            }

            writer
            .WriteSummary(property)
            .WriteLine(GetPublicPropertyDeclaration(property))
            .WriteLine(GetInternalPropertyDeclarationOrNull(property));
        }
示例#2
0
        private static void WritePropertyDeclaration(DataClassWriter writer, Property property)
        {
            if (property.CustomImpl)
            {
                return;
            }

            writer
            .WriteSummary(property)
            .WritePublicProperty(property)
            .WriteInternalPropertyWhenNeeded(property);
        }
示例#3
0
        private static DataClassWriter WriteToolPath(this DataClassWriter writer)
        {
            if (!(writer.DataClass is SettingsClass settingsClass))
            {
                return(writer);
            }

            var tool     = settingsClass.Tool.NotNull();
            var resolver = !tool.CustomExecutable
                ? $"{tool.GetClassName()}.{tool.Name}Path"
                : "GetToolPath()";

            return(writer
                   .WriteSummary($"Path to the {tool.Name} executable.")
                   .WriteLine($"public override string ToolPath => base.ToolPath ?? {resolver};"));
        }
示例#4
0
        private static DataClassWriter WriteToolPath(this DataClassWriter writer)
        {
            if (!(writer.DataClass is SettingsClass settingsClass))
            {
                return(writer);
            }

            var tool      = settingsClass.Tool.NotNull();
            var resolvers = new List <string>();

            if (tool.CustomExecutable)
            {
                resolvers.Add("{GetToolPath()}".DoubleQuoteInterpolated());
            }

            if (tool.PackageId != null)
            {
                resolvers.Add("ToolPathResolver.GetPackageExecutable(" +
                              $"{tool.PackageId.DoubleQuoteInterpolated()}, " +
                              $"{(tool.PackageExecutable ?? "{GetPackageExecutable()}").DoubleQuoteInterpolated()})");
            }

            if (tool.EnvironmentExecutable != null)
            {
                resolvers.Add("ToolPathResolver.GetEnvironmentExecutable(" +
                              $"{tool.EnvironmentExecutable.DoubleQuoteInterpolated()})");
            }

            if (tool.PathExecutable != null)
            {
                resolvers.Add("ToolPathResolver.GetPathExecutable(" +
                              $"{tool.PathExecutable.DoubleQuoteInterpolated()})");
            }

            if (resolvers.Count == 0)
            {
                return(writer);
            }

            Trace.Assert(resolvers.Count == 1, "resolvers.Count == 1");

            return(writer
                   .WriteSummary($"Path to the {tool.Name} executable.")
                   .WriteLine($"public override string ToolPath => base.ToolPath ?? {resolvers.Single()};"));
        }
示例#5
0
        // ReSharper disable once CyclomaticComplexity
        private static DataClassWriter WriteToolPath(this DataClassWriter writer)
        {
            var settingsClass = writer.DataClass as SettingsClass;

            if (settingsClass == null)
            {
                return(writer);
            }

            var tool      = settingsClass.Tool.NotNull();
            var resolvers = new List <string> {
                "base.ToolPath"
            };

            if (tool.CustomExecutable)
            {
                resolvers.Add("{GetToolPath()}".DoubleQuoteInterpolated());
            }
            if (tool.PackageId != null)
            {
                resolvers.Add("ToolPathResolver.GetPackageExecutable(" +
                              $"{tool.PackageId.DoubleQuoteInterpolated()}, " +
                              $"{(tool.PackageExecutable ?? "{GetPackageExecutable()}").DoubleQuoteInterpolated()})");
            }
            if (tool.EnvironmentExecutable != null)
            {
                resolvers.Add("ToolPathResolver.GetEnvironmentExecutable(" +
                              $"{tool.EnvironmentExecutable.DoubleQuoteInterpolated()})");
            }
            if (tool.PathExecutable != null)
            {
                resolvers.Add("ToolPathResolver.GetPathExecutable(" +
                              $"{tool.PathExecutable.DoubleQuoteInterpolated()})");
            }

            if (resolvers.Count == 1)
            {
                return(writer);
            }

            return(writer
                   .WriteSummary($"Path to the {tool.Name} executable.")
                   .WriteLine($"public override string ToolPath => {resolvers.Join(" ?? ")};"));
        }
示例#6
0
        private static void WritePropertyDeclaration(DataClassWriter writer, Property property)
        {
            if (property.CustomImpl)
            {
                return;
            }

            var type                = GetPublicPropertyType(property);
            var implementation      = GetPublicPropertyImplementation(property);
            var hasInternalProperty = property.IsList() || property.IsDictionary() || property.IsLookupTable();

            writer
            .WriteSummary(property)
            .WriteObsoleteAttributeWhenObsolete(property)
            .WriteLineIfTrue(!hasInternalProperty, GetJsonSerializationAttribute(property))
            .WriteLineIfTrue(hasInternalProperty, GetJsonIgnoreAttribute(property))
            .WriteLine($"public virtual {type} {property.Name} {implementation}")
            .WriteLineIfTrue(hasInternalProperty, GetJsonSerializationAttribute(property))
            .WriteLineIfTrue(hasInternalProperty, $"internal {property.Type} {property.Name}Internal {{ get; set; }}{GetPropertyInitialization(property)}");
        }