public virtual string constructLinesOfProc(ICodeModuleWrapper codeModule, IExtractMethodModel model) { var newLine = Environment.NewLine; var method = model.Method; var keyword = Tokens.Sub; var asTypeClause = string.Empty; var selection = model.RowsToRemove; var access = method.Accessibility.ToString(); var extractedParams = method.Parameters.Select(p => ExtractedParameter.PassedBy.ByRef + " " + p.Name + " " + Tokens.As + " " + p.TypeName); var parameters = "(" + string.Join(", ", extractedParams) + ")"; //method signature var result = access + ' ' + keyword + ' ' + method.MethodName + parameters + ' ' + asTypeClause + newLine; // method body string textToMove = ""; foreach (var item in selection) { textToMove += codeModule.get_Lines(item.StartLine, item.EndLine - item.StartLine + 1); textToMove += Environment.NewLine; } // method end; result += textToMove; result += Tokens.End + " " + Tokens.Sub; return(result); }
public virtual void removeSelection(ICodeModuleWrapper codeModule, IEnumerable <Selection> selection) { foreach (var item in selection.OrderBy(x => - x.StartLine)) { var start = item.StartLine; var end = item.EndLine; var lineCount = end - start + 1; codeModule.DeleteLines(start, lineCount); } }
public ExtractMethodRefactoring( ICodeModuleWrapper codeModule, Action <Object> onParseRequest, Func <QualifiedSelection?, string, IExtractMethodModel> createMethodModel, IExtractMethodExtraction extraction) { _codeModule = codeModule; _createMethodModel = createMethodModel; _extraction = extraction; _onParseRequest = onParseRequest; }
public void apply(ICodeModuleWrapper codeModule, IExtractMethodModel model, Selection selection) { var newMethodCall = model.Method.NewMethodCall(); var positionToInsertNewMethod = model.PositionForNewMethod; var positionForMethodCall = model.PositionForMethodCall; var selectionToRemove = model.RowsToRemove; // The next 4 lines are dependent on the positions of the various parts, // so have to be applied in the correct order. var newMethod = constructLinesOfProc(codeModule, model); codeModule.InsertLines(positionToInsertNewMethod.StartLine, newMethod); removeSelection(codeModule, selectionToRemove); codeModule.InsertLines(selection.StartLine, newMethodCall); }
public static void SetSelection(this ICodeModuleWrapper module, QualifiedSelection selection) { module.CodeModule.SetSelection(selection.Selection); }
public static void DeleteLines(this ICodeModuleWrapper module, Selection selection) { module.CodeModule.DeleteLines(selection); }