diff options
author | Tor Norbye <tnorbye@google.com> | 2014-07-25 20:12:40 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2014-07-24 20:55:36 +0000 |
commit | 6044be7330c93bc8dacb0f63e62da8029f39a16f (patch) | |
tree | 0ba72f5de1949e0527874a799baa224cbe1537e0 /platform/structuralsearch/source/com/intellij/structuralsearch/plugin/replace/impl/ReplacerUtil.java | |
parent | b03a5855292feb8c331815f883fe64372aacd872 (diff) | |
parent | e5266e2343c8d275d79fa0be725180d0fe3a993c (diff) | |
download | idea-6044be7330c93bc8dacb0f63e62da8029f39a16f.tar.gz |
Merge "Merge remote-tracking branch 'aosp/upstream-master' into merge"
Diffstat (limited to 'platform/structuralsearch/source/com/intellij/structuralsearch/plugin/replace/impl/ReplacerUtil.java')
-rw-r--r-- | platform/structuralsearch/source/com/intellij/structuralsearch/plugin/replace/impl/ReplacerUtil.java | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/replace/impl/ReplacerUtil.java b/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/replace/impl/ReplacerUtil.java new file mode 100644 index 000000000000..365ec74bc01e --- /dev/null +++ b/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/replace/impl/ReplacerUtil.java @@ -0,0 +1,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]; + } +} |