1

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

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

2 回答 2

3

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

从 OmniBrowser 的上下文菜单中选择Refactor > Class Regex。然后修改并接受模板如下:

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

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

于 2011-07-30T07:27:02.610 回答
0

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

(SystemOrganizer default classesInCategory: 'my pakage name') do: [ :class |
    "Adding the prefix PRE classes"
    (class name beginsWith: 'PRE') ifFalse: [ class rename: 'PRE' , class name ] 
]
于 2012-12-18T15:13:12.820 回答