2011-07-30 46 views
1

我要重命名開始與前綴SMP到RS,包括源代碼引用的所有類質量重命名(直接者和間接的如Smalltalk在像SMPClass1:#SMPClass2)和在課堂和方法評論中。當前的RBParseTreeRewriter可以做到這一點嗎? 沒有解析樹重寫的等效是:類解決Smalltalk的引用與重構瀏覽器

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

回答

3

是的,這是可以做到的,但不與RBParseTreeRewriter(這是一個低級別的工具來重寫源代碼內部使用的重構)。

從OmniBrowser在上下文菜單中選擇Refactor> Class Regex。然後修改並接受該模板,如下所示:

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

這會自動重命名所有類和引用。

+0

謝謝,任何具體的理由要求OmniBrowser?可能是由代碼指定的環境限制對特定包的更改? – user869097

+0

OmniBrowser不是必需的,但當然它使顯著簡單。所有的重構都可以從工作區腳本觸發。 –

+0

要範圍重構特定數據包選擇包中OmniBrowser的實體並點擊「重構範圍>包」。在結果瀏覽器中執行上述重命名重構。同樣,這也可以通過工作區腳本來完成,但是您可以自己做:-) –

0

一個替代方案是在單個封裝中,以使下面的代碼來重命名的類:

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