private static string RemoveMethods(string code, IEnumerable <MethodVisitorResult> methods) { var document = new StringBuilderDocument(code); using (var script = new DocumentScript( document, FormattingOptionsFactory.CreateAllman(), new TextEditorOptions())) { foreach (var method in methods) { var offset = script.GetCurrentOffset(method.MethodDefinition.GetRegion().Begin); script.Replace(method.MethodDefinition, new MethodDeclaration()); script.Replace(offset, new MethodDeclaration().GetText().Trim().Length, ""); } } return(document.Text); }
private static string RemoveClasses(string code, IEnumerable <TypeDeclaration> classes) { var document = new StringBuilderDocument(code); using ( var script = new DocumentScript( document, FormattingOptionsFactory.CreateAllman(), new TextEditorOptions())) { foreach (var @class in classes) { var offset = script.GetCurrentOffset(@class.GetRegion().Begin); script.Replace(@class, new TypeDeclaration()); script.Replace(offset, new TypeDeclaration().GetText().Trim().Length, ""); } } return(document.Text); }
void UpdateField(IField oldField, CodeMemberField newField) { DomRegion region = oldField.Region; DocumentScript script = GetScript(region.FileName); int offset = script.GetCurrentOffset(region.Begin); int endOffset = script.GetCurrentOffset(region.End); string code = GenerateField(newField); script.Replace(offset, endOffset - offset, code); }
void SaveInitializeComponents(CodeMemberMethod codeMethod) { var bodyRegion = initializeComponents.BodyRegion; DocumentScript script = GetScript(bodyRegion.FileName); string newline = DocumentUtilities.GetLineTerminator(script.OriginalDocument, bodyRegion.BeginLine); string indentation = DocumentUtilities.GetIndentation(script.OriginalDocument, bodyRegion.BeginLine); string code = "{" + newline + GenerateInitializeComponents(codeMethod, indentation, newline) + indentation + "}"; int startOffset = script.GetCurrentOffset(bodyRegion.Begin); int endOffset = script.GetCurrentOffset(bodyRegion.End); script.Replace(startOffset, endOffset - startOffset, code); }
public static string ReplaceStringLiteralsWithVariables(string text, IEnumerable <string> macros, Func <int, int, string, string, string> onReplace) { var setting = new CompilerSettings(); foreach (var macro in macros) { setting.ConditionalSymbols.Add(macro); } var tree = SyntaxTree.Parse(text, string.Empty, setting); tree.Freeze(); var doc = new StringBuilderDocument(text); using (var editor = new DocumentScript(doc, FormattingOptionsFactory.CreateAllman(), TextEditorOptions.Default)) { var originDoc = editor.OriginalDocument; foreach (var node in tree.Descendants.OfType <PrimitiveExpression>().Where(e => e.Value is string)) { var line = originDoc.GetLineByNumber(node.StartLocation.Line); var result = onReplace(node.StartLocation.Line, node.StartLocation.Column, originDoc.GetText(line), node.Value as string); if (result != null) { var names = result.Split('.'); Expression exp = new IdentifierExpression(names.First()); foreach (var name in names.Skip(1)) { exp = exp.Member(name); } editor.Replace(node, exp); } } } return(doc.Text); }