blob: 365ec74bc01e4db263da7db9a0f0bb4d74e5701e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
package com.intellij.structuralsearch.plugin.replace.impl;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.fileTypes.FileType;
import com.intellij.psi.PsiComment;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiWhiteSpace;
import com.intellij.structuralsearch.StructuralSearchProfile;
import com.intellij.structuralsearch.impl.matcher.MatcherImplUtil;
import com.intellij.structuralsearch.impl.matcher.PatternTreeContext;
/**
* @author Eugene.Kudelevsky
*/
public class ReplacerUtil {
private ReplacerUtil() {
}
public static PsiElement[] createTreeForReplacement(String replacement, PatternTreeContext treeContext, ReplacementContext context) {
FileType fileType = context.getOptions().getMatchOptions().getFileType();
return MatcherImplUtil.createTreeFromText(replacement, treeContext, fileType, context.getProject());
}
public static PsiElement copySpacesAndCommentsBefore(PsiElement elementToReplace,
PsiElement[] patternElements,
String replacementToMake,
PsiElement elementParent) {
int i = 0;
while (true) { // if it goes out of bounds then deep error happens
if (!(patternElements[i] instanceof PsiComment || patternElements[i] instanceof PsiWhiteSpace)) {
break;
}
++i;
if (patternElements.length == i) {
break;
}
}
if (patternElements.length == i) {
Logger logger = Logger.getInstance(StructuralSearchProfile.class.getName());
logger.error("Unexpected replacement structure:" + replacementToMake);
}
if (i != 0) {
elementParent.addRangeBefore(patternElements[0], patternElements[i - 1], elementToReplace);
}
return patternElements[i];
}
}
|