private void SortFormatTokens_Execute(Object sender, ApplyContentEventArgs ea) { MethodCallExpression TheStringFormat = _PrimitiveString.Parent as MethodCallExpression; string TheString = _PrimitiveString.Name; List<Expression> TheArguments = TheStringFormat.Arguments.ToList<Expression>().Skip(1).ToList<Expression>(); SourceRange TheStringFormatRange = TheStringFormat.Range; //Get List of Tokens var Tokens = new TokenGatherer().GetTokens(TheString); // Determine "Sort" map. List<MapItem> Map = MapGenerator.GenerateMap(from item in Tokens select item.Index); // Affect string using map TheString = new StringTokenRenumberer().Renumber(TheString, Tokens, Map); // Affect params using map? TheArguments = new ListReorderer().Reorder(TheArguments, Tokens, Map); // Write TheString and TheList back to the code. TheStringFormat.Arguments.Clear(); TheStringFormat.Arguments.Add(new PrimitiveExpression(TheString)); TheStringFormat.Arguments.AddRange(TheArguments); string TheNewCode = CodeRush.CodeMod.GenerateCode(TheStringFormat, true); ea.TextDocument.SetText(TheStringFormatRange, TheNewCode); }
private void FixStringAndList(ref string startString, ref List<int> startList) { // gather Tokens var Tokens = new TokenGatherer().GetTokens(startString); // Generate map List<MapItem> Map = MapGenerator.GenerateMap(from item in Tokens select item.Index); // Use map to rebuild string. startString = new StringTokenRenumberer().Renumber(startString, Tokens, Map); // use Map to rebuild list startList = new ListReorderer().Reorder(startList, Tokens, Map); }
public void TestEmptyList() { var expected = new List <int> { }; var solver = new ListReorderer(); var linkedList = GenerateLinkedListFromValues(new List <int> { }); solver.ReorderList(linkedList); var actual = ConvertToList(linkedList); Assert.AreEqual(actual, expected); }
public void ReorderParams2ParamsWithDuplicate_Test() { var StartString = "{1}, {0}, {1}"; var StartList = new List<int>() { 0, 1 }; var ExpectedList = new List<int>() { 1, 0 }; var Tokens = new TokenGatherer().GetTokens(StartString); var Map = MapGenerator.GenerateMap(from item in Tokens select item.Index); var ResultList = new ListReorderer().Reorder(StartList, Tokens, Map); Assert.IsTrue(AreEqual(ExpectedList, ResultList)); }
public void TestEvenNumberOfElements() { var expected = new List <int> { 1, 4, 2, 3 }; var solver = new ListReorderer(); var linkedList = GenerateLinkedListFromValues(new List <int> { 1, 2, 3, 4 }); solver.ReorderList(linkedList); var actual = ConvertToList(linkedList); Assert.AreEqual(actual, expected); }