IntelliJ структурный поиск и замена проблем - PullRequest
2 голосов
/ 21 июля 2010

Есть ли простой способ захвата типов? Кажется, я не могу выполнять базовые вещи, такие как использование переменных выражений рядом, например, $mapType$$mapEnd$ для простой замены. Есть ли причина, по которой это может быть? То есть, если у меня есть одно выражение, скажем .*\s*.*abc, и я разбил его на две переменные .*\s* и .*abc, выражение не соответствует ни одному тексту. Что может быть не так?

Example template:
$var1$ = $impl$

Example second template:
$var1$ = $type$$implEnd$

Если $impl$ является полным регулярным выражением, размещение $type$ и $implEnd$ вместе с половиной соответствующего регулярного выражения приводит к тому, что шаблоны не будут совпадать. Что может быть не так?

Я пытаюсь сделать это преобразование:

List<String,Object> list = new ArrayList<String,Object>();
List<String,Object> list = Lists.newArrayList();

Понятно, что мне нужно как-то захватить «массив», а также только те типы, у которых нет аргументов.

1 Ответ

1 голос
/ 23 июля 2010

SSR соответствует одной или нескольким языковым конструкциям для каждой переменной, он НЕ будет захватывать несколько переменных ($ mapType $$ mapEnd $) в ссылку на тип (или любой другой языковой лексем). Для кода типа

List<String> someName = new ArrayList<String>();

нужно иметь шаблон поиска

List<$Type$> $variable$ = new $ListType$<$Type$>()

и замените его соответственно. Для более сложных обобщенных выражений необходимо учитывать несколько переменных обобщенного типа, таких как Map<$Key$, $Value$> Можно было бы найти эту статью полезной (много примеров конкретных шаблонов SSR)

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

...