Commits

Anonymous committed f73204e Draft

refactor: using new dialogs for Restructure

Comments (0)

Files changed (1)

ropemacs/refactor.py

     def _get_optionals(self):
         return self.optionals
 
+    @property
+    def resources_option(self):
+        return dialog.Data('Files to apply this refactoring on: ',
+                           decode=self._decode_resources)
+
     def _decode_resources(self, value):
         return _resources(self.project, value)
 
         if self.renamer.is_method():
             opts['in_hierarchy'] = dialog.Boolean('Rename methods in '
                                                   'class hierarchy: ')
-        opts['resources'] = dialog.Data('Files to apply this refactoring on: ',
-                                        decode=self._decode_resources)
+        opts['resources'] = self.resources_option
         opts['unsure'] = dialog.Data('Unsure occurrences: ',
                                      decode=self._decode_unsure,
                                      values=['ignore', 'match'],
     key = 'x'
     confs = {'pattern': dialog.Data('Restructuring pattern: '),
              'goal': dialog.Data('Restructuring goal: ')}
-    optionals = {
-        'args': dialog.Data('Arguments: '),
-        'imports': dialog.Data('Imports: '),
-        'resources': dialog.Data('Files to apply this restructuring: ')}
 
     def _calculate_changes(self, values, task_handle):
-        args = {}
-        for raw_check in values.get('args', '').split('\n'):
-            if raw_check:
-                key, value = raw_check.split(':', 1)
-                args[key.strip()] = value.strip()
-        imports = [line.strip()
-                   for line in values.get('imports', '').split('\n')]
-        resources = _resources(self.project, values.get('resources', None))
         restructuring = rope.refactor.restructure.Restructure(
             self.project, values['pattern'], values['goal'],
-            args=args, imports=imports)
-        return restructuring.get_changes(resources=resources,
+            args=values['args'], imports=values['imports'])
+        return restructuring.get_changes(resources=values['resources'],
                                          task_handle=task_handle)
 
+    def _get_optionals(self):
+        return {
+            'args': dialog.Data('Arguments: ', decode=self._decode_args),
+            'imports': dialog.Data('Imports: ', decode=self._decode_imports),
+            'resources': self.resources_option}
+
+    def _decode_args(self, value):
+        if value:
+            args = {}
+            for raw_check in value.split('\n'):
+                if raw_check:
+                    key, value = raw_check.split(':', 1)
+                    args[key.strip()] = value.strip()
+            return args
+
+    def _decode_imports(self, value):
+        if value:
+            return [line.strip() for line in value.split('\n')]
+
 
 class UseFunction(Refactoring):
     key = 'u'
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.