Anonymous avatar Anonymous committed 8bafcf9

Extract refactorings default to similar=True

Comments (0)

Files changed (1)

ropemacs/refactor.py

                                         task_handle=task_handle)
 
 
-class ExtractVariable(Refactoring):
+class _Extract(Refactoring):
+
+    saveall = False
+    kind = None
+    optionals = {'similar': dialog.Data('Extract similar pieces: ',
+                                        values=['yes', 'no'], default='yes')}
+    constructor = None
+
+    def _create_refactoring(self):
+        start, end = self.region
+        self.extractor = self.constructor(self.project,
+                                          self.resource, start, end)
+
+    def _calculate_changes(self, values, task_handle):
+        similar = values.get('similar', 'yes') == 'yes'
+        return self.extractor.get_changes(values['name'], similar=similar)
+
+    def _get_confs(self):
+        return {'name': dialog.Data('Extracted %s name: ' % self.kind)}
+
+
+class ExtractVariable(_Extract):
 
     name = 'extract_variable'
     key = 'C-c r l'
-    saveall = False
-    confs = {'name': dialog.Data('Extracted variable name: ')}
+    kind = 'variable'
+    constructor = rope.refactor.extract.ExtractVariable
 
-    def _create_refactoring(self):
-        start, end = self.region
-        self.extractor = rope.refactor.extract.ExtractVariable(
-            self.project, self.resource, start, end)
 
-    def _calculate_changes(self, values, task_handle):
-        return self.extractor.get_changes(values['name'])
-
-
-class ExtractMethod(Refactoring):
+class ExtractMethod(_Extract):
 
     name = 'extract_method'
     key = 'C-c r m'
-    saveall = False
-    confs = {'name': dialog.Data('Extracted method name: ')}
-
-    def _create_refactoring(self):
-        start, end = self.region
-        self.extractor = rope.refactor.extract.ExtractMethod(
-            self.project, self.resource, start, end)
-
-    def _calculate_changes(self, values, task_handle):
-        return self.extractor.get_changes(values['name'])
+    kind = 'method'
+    constructor = rope.refactor.extract.ExtractMethod
 
 
 class OrganizeImports(Refactoring):
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.