Массовое переименование классов, решающих ссылки в Smalltalk с помощью Refactoring Browser - PullRequest
1 голос
/ 30 июля 2011

Я хочу переименовать все классы, начиная с префикса SMP, в RS, включая ссылки в исходном коде (прямые, такие как SMPClass1, и косвенные, например Smalltalk at: # SMPClass2), а также в комментариях к классам и методам. Может ли текущий RBParseTreeRewriter сделать это? Эквивалент без переписателя дерева разбора будет:

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

Ответы [ 2 ]

3 голосов
/ 30 июля 2011

Да, это можно сделать, но не с помощью RBParseTreeRewriter (это низкоуровневый инструмент для перезаписи исходного кода, который внутренне используется рефакторингом).

В OmniBrowser выберите в контекстном меню Refactor> Класс Regex .Затем измените и примите шаблон следующим образом:

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

Это автоматически переименует все классы и ссылки.

0 голосов
/ 18 декабря 2012

Альтернативой является переименование классов в одном пакете для создания следующего кода:

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