public MergeConflict()

in dsl-samples/MergeConflictsResolution/MergeConflictsResolution/MergeConflict.cs [18:76]


        public MergeConflict(string conflict, string fileContent = null, string filePath = null)
        {
            string headLookup = "<<<<<<< HEAD";
            string middleLookup = "=======";
            string endLookup = ">>>>>>>";

            bool inHeadSection = false;
            string[] linesConflict = conflict.SplitLines();
            List<string> conflictsInForked = new List<string>();
            List<string> conflictsInMain = new List<string>();
            foreach (string line in linesConflict)
            {
                if (line.StartsWith(Include) && inHeadSection == false)
                {
                    conflictsInMain.Add(line.NormalizeInclude());
                }

                if (line.StartsWith(Include) && inHeadSection == true)
                {
                    conflictsInForked.Add(line.NormalizeInclude());
                }

                if (line.StartsWith(headLookup))
                {
                    inHeadSection = true;
                }

                if (line.StartsWith(middleLookup))
                {
                    inHeadSection = false;
                }
            }

            string[] linesContent = fileContent.SplitLines();
            bool isOutsideConflicts = true;
            List<string> outsideConflictContent = new List<string>();
            foreach (string line in linesContent)
            {
                if (line.StartsWith(Include) && isOutsideConflicts)
                {
                    outsideConflictContent.Add(line.NormalizeInclude());
                }

                if (line.StartsWith(headLookup))
                {
                    isOutsideConflicts = false;
                }

                if (line.StartsWith(endLookup))
                {
                    isOutsideConflicts = true;
                }
            }

            this.Upstream = PathToNode(conflictsInForked);
            this.Downstream = PathToNode(conflictsInMain);
            this.UpstreamContent = PathToNode(outsideConflictContent);
            this.BasePath = filePath;
        }