Пример #1
0
        public static string AddTagsToLines(string contents, ICollection <string> existingLineTags)
        {
            Program program;
            IDictionary <string, StringInfo> stringTable;

            Compiler.CompileString(contents, "input", out program, out stringTable);

            var untaggedLines = stringTable.Where(entry => entry.Value.isImplicitTag);

            var allSourceLines = contents.Split(new[] { "\n", "\r\n", "\n" }, StringSplitOptions.None);

            var existingLines = new HashSet <string>(existingLineTags);

            foreach (var untaggedLine in untaggedLines)
            {
                var lineNumber = untaggedLine.Value.lineNumber;
                var tag        = "#" + GenerateString(existingLines);

                allSourceLines[lineNumber - 1] += $" {tag}";

                existingLines.Add(tag);
            }

            return(string.Join(Environment.NewLine, allSourceLines));
        }