public string GetIndentedText(string indent, TabSettings tabSettings) { LineSubdivider subdivider = new LineSubdivider(text, true); StringBuilder builder = new StringBuilder(); bool first = true; foreach (string line in subdivider.GetLines()) { if (!first) { builder.Append(indent); } first = false; if (tabSettings.useSpaces && line.StartsWith("\t")) { string tab = tabSettings.Tab; int count = 0; while (count < line.Length && line[count] == '\t') { ++count; builder.Append(tab); } builder.Append(line.Substring(count)); } else { builder.Append(line); } } return(builder.ToString()); }
public void LineSubdivider_GetWithoutEndRN() { Assert.AreEqual("text", LineSubdivider.GetWithoutEndRN("text\r\n")); Assert.AreEqual("text", LineSubdivider.GetWithoutEndRN("text\n")); Assert.AreEqual("text", LineSubdivider.GetWithoutEndRN("text\r")); Assert.AreEqual("text", LineSubdivider.GetWithoutEndRN("text")); Assert.AreEqual("t", LineSubdivider.GetWithoutEndRN("t\r\n")); Assert.AreEqual("t", LineSubdivider.GetWithoutEndRN("t\n")); Assert.AreEqual("t", LineSubdivider.GetWithoutEndRN("t\r")); Assert.AreEqual("t", LineSubdivider.GetWithoutEndRN("t")); Assert.AreEqual("", LineSubdivider.GetWithoutEndRN("\r\n")); Assert.AreEqual("", LineSubdivider.GetWithoutEndRN("\n")); Assert.AreEqual("", LineSubdivider.GetWithoutEndRN("\r")); Assert.AreEqual("", LineSubdivider.GetWithoutEndRN("")); }
public void LineSubdivider_WithoutLastEmpty() { Assert.AreEqual(2, new LineSubdivider("text\n", false).GetLinesCount()); Assert.AreEqual(1, new LineSubdivider("text\n", true).GetLinesCount()); Assert.AreEqual(2, new LineSubdivider("text\na", false).GetLinesCount()); Assert.AreEqual(2, new LineSubdivider("text\na", true).GetLinesCount()); Assert.AreEqual(2, new LineSubdivider("\n", false).GetLinesCount()); { LineSubdivider subdivider = new LineSubdivider("\n", true); Assert.AreEqual(1, subdivider.GetLinesCount()); Assert.AreEqual(1, subdivider.GetLinesCount()); } { LineSubdivider subdivider = new LineSubdivider("text\ntext\n", true); Assert.AreEqual(2, subdivider.GetLinesCount()); Assert.AreEqual(2, subdivider.GetLinesCount()); } }
public SnippetFile(string rawText, string fileName) { LineSubdivider subdivider = new LineSubdivider(rawText, true); StringBuilder builder = new StringBuilder(); string lastKey = null; string lastDesc = null; int index = 0; foreach (string line in subdivider.GetLines()) { if (line.StartsWith("#") || line.StartsWith("extensions")) { continue; } if (line.StartsWith("snippet ") || line.StartsWith("snippet\t")) { if (lastKey != null) { _atoms.Add(new SnippetAtom(index++, lastKey, lastDesc, builder.ToString(), fileName)); builder.Length = 0; lastKey = null; lastDesc = null; } string key = line.Substring("snippet ".Length).Trim(); string desc = ""; int descIndex = -1; for (int i = 0; i < key.Length; ++i) { char c = key[i]; if (c == ' ' || c == '\t') { descIndex = i; break; } } if (descIndex != -1) { desc = key.Substring(descIndex + 1); key = key.Substring(0, descIndex); } builder.Length = 0; if (!string.IsNullOrEmpty(key)) { lastKey = key; lastDesc = desc; builder.Length = 0; } } else { if (lastKey != null && line.StartsWith("\t")) { builder.Append(line.Substring(1)); } } } if (lastKey != null) { _atoms.Add(new SnippetAtom(index++, lastKey, lastDesc, builder.ToString(), fileName)); } }