Пример #1
0
        public static string Compose(YoloConfig yoloConfig)
        {
            var sb = new StringBuilder();

            var cachedCulture = CultureInfo.CurrentCulture;

            CultureInfo.CurrentCulture = CultureInfo.InvariantCulture;

            foreach (var element in yoloConfig.YoloConfigElements)
            {
                var type = element.GetType();

                if (sb.Length > 0)
                {
                    sb.AppendLine();
                }
                sb.AppendLine($"[{PascalCaseToSnakeCase(type.Name)}]");

                var properties = type.GetProperties();
                foreach (var property in properties)
                {
                    var propertyType = property.PropertyType;
                    var value        = property.GetValue(element);

                    var composedProperty = ComposeProperty(propertyType, value);
                    sb.AppendLine($"{PascalCaseToSnakeCase(property.Name)}={PascalCaseToSnakeCase(composedProperty)}");
                }
            }

            CultureInfo.CurrentCulture = cachedCulture;

            return(sb.ToString());
        }
Пример #2
0
        public static YoloConfig Parse(string filePath)
        {
            var lines      = File.ReadAllLines(filePath);
            var yoloConfig = new YoloConfig();

            foreach (var line in lines)
            {
                if (line.Length == 0)
                {
                    continue;
                }

                var firstLetter = line[0];
                switch (firstLetter)
                {
                case '[':
                    var lineWithoutBrackets = line.Replace("[", "").Replace("]", "");
                    var className           = SnakeCaseToPascalCase(lineWithoutBrackets);

                    var type = Type.GetType($"Alturos.ImageAnnotation.Model.YoloConfig.{className}");
                    var item = Activator.CreateInstance(type) as YoloConfigElement;
                    yoloConfig.YoloConfigElements.Add(item);

                    break;

                case '#':
                    break;

                default:
                    var splitString = line.Replace(" = ", "=").Split('=');

                    var propertyName = SnakeCaseToPascalCase(splitString[0]);
                    var value        = splitString[1];

                    var obj      = yoloConfig.YoloConfigElements.Last();
                    var property = obj.GetType().GetProperty(propertyName);

                    var parsedProperty = ParseProperty(property.PropertyType, value);
                    property.SetValue(obj, parsedProperty);

                    break;
                }
            }

            return(yoloConfig);
        }
Пример #3
0
 public Config(string root)
 {
     YOLO  = new YoloConfig(root);
     TRAIN = new TrainConfig(root);
 }