Каков наилучший способ найти и заменить код "! = Null" на andand? - PullRequest
2 голосов
/ 11 декабря 2008

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

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

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

Ответы [ 2 ]

2 голосов
/ 12 декабря 2008

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

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"
1 голос
/ 11 декабря 2008

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

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

...