使用重构浏览器批量重命名解决Smalltalk中的引用的类

时间:2011-07-30 02:24:23

标签: refactoring smalltalk pharo automated-refactoring

我想重命名所有以SMP到RS前缀开头的类,包括源代码中的引用(SMPClass1之类的直接引用和Smalltalk at:#SMPClass2之类的引用)以及类和方法注释。当前的RBParseTreeRewriter可以这样做吗? 没有解析树重写器的等价物将是:

Smalltalk allClassesDo: [ :class |
(class name beginsWith: 'SW2')
    ifTrue: [ class rename: 'PR' , (class name allButFirst: 3) ] ].

2 个答案:

答案 0 :(得分:3)

是的,可以这样做,但不能使用RBParseTreeRewriter(这是重写重构内部使用的源代码的低级工具)。

从OmniBrowser中选择上下文菜单 Refactor>正则表达式。然后修改并接受模板,如下所示:

ORClassRegexRefactoring new
  renameClasses;
  replace: '^SW2(.*)$' with: 'PR$1' ignoreCase: false;
  yourself

这将自动重命名所有类和引用。

答案 1 :(得分:0)

另一种方法是在单个包中重命名类以生成以下代码:

(SystemOrganizer default classesInCategory: 'my pakage name') do: [ :class |
    "Adding the prefix PRE classes"
    (class name beginsWith: 'PRE') ifFalse: [ class rename: 'PRE' , class name ] 
]