예제 #1
0
        public Solution Parse(string path)
        {
            var projects = new List <Project>();

            var lines = _fileReader.ReadAllLines(path);


            foreach (var line in lines)
            {
                var baseDirectory = _pathReader.GetDirectoryName(path);

                var match = Regex.Match(line, PROJECT_INCLUDE_REGEX);
                if (match.Success)
                {
                    var result = match.Value.Split('"')[5];

                    while (result.Contains(FOLDER_UP_ONE_LEVEL))
                    {
                        var index = result.IndexOf(FOLDER_UP_ONE_LEVEL, StringComparison.Ordinal);
                        result        = result.Remove(index, FOLDER_UP_ONE_LEVEL.Length);
                        baseDirectory = _directoryReader.GetParent(baseDirectory);
                    }

                    Debug.Assert(baseDirectory != null, nameof(baseDirectory) + " != null");

                    result = _pathReader.Combine(baseDirectory, result);

                    projects.Add(new Project(result, null));
                }
            }

            var solution = new Solution(path)
            {
                Projects = projects
            };

            return(solution);
        }