Каков наилучший способ найти и заменить код «! = Null» на andand?

Я рефакторинг своего кода, и я ищу решение, чтобы grep мои исходные файлы для чего-то вроде

if ( user && user.name && user.name.length() < 128 ) ...

чтобы потом заменить на ruby's andand или groovy? оператор (оператор безопасной навигации).

11.12.2008 13:25:44
Вы ищете регулярное выражение для этого?
Craig Wilson 11.12.2008 13:28:17
Да, если это возможно, было бы неплохо.
about 11.12.2008 14:19:46
Элвис покинул здание ...
Steven A. Lowe 11.12.2008 17:12:51
2 ОТВЕТА

Идея IntelliJ имеет «структурный поиск и замену», который позволит вам сделать это. Это понимает семантику языка, поэтому вы можете выполнять всевозможные интересные операции замены.

http://www.jetbrains.com/idea/documentation/ssr.html

1
11.12.2008 16:31:33

Вот кое-что, с чего можно начать. Интересно, можно ли это обобщить без необходимости программной генерации регулярного выражения?

line = "user && user.name && user.name.length()"
p line.match(/(?:(\w*)(?:\s\&\&\s(\1\.(\w*)))(?:\s\&\&\s(\2\.(\w*))))/).to_a.
  reject {|m| m.match(/\./)}.join('.andand.')

=> "user.andand.name.andand.length"
2
12.12.2008 14:15:58