use of org.intellij.lang.regexp.psi.RegExpPattern in project intellij-community by JetBrains.
the class RegExpFactory method createBranchFromText.
@NotNull
public static RegExpBranch createBranchFromText(@NotNull CharSequence text, @NotNull PsiElement context) {
final RegExpPattern pattern = createPatternFromText(text, context);
final RegExpBranch branch = PsiTreeUtil.getChildOfType(pattern, RegExpBranch.class);
assert branch != null;
return branch;
}
use of org.intellij.lang.regexp.psi.RegExpPattern in project intellij-community by JetBrains.
the class RegExpUtil method getEnumValues.
@Nullable
public static Set<String> getEnumValues(Project project, @NotNull String regExp) {
final PsiFileFactory factory = PsiFileFactory.getInstance(project);
final PsiFile file = factory.createFileFromText("dummy.regexp", RegExpFileType.INSTANCE, regExp);
final RegExpPattern pattern = (RegExpPattern) file.getFirstChild();
if (pattern == null) {
return null;
}
final RegExpBranch[] branches = pattern.getBranches();
final Set<String> values = new HashSet<>();
for (RegExpBranch branch : branches) {
if (analyzeBranch(branch)) {
values.add(branch.getUnescapedText());
}
}
return values;
}
use of org.intellij.lang.regexp.psi.RegExpPattern in project intellij-community by JetBrains.
the class RegExpFactory method createPatternFromText.
@NotNull
public static RegExpPattern createPatternFromText(@NotNull CharSequence text, @NotNull PsiElement context) {
final PsiFileFactory factory = PsiFileFactory.getInstance(context.getProject());
final PsiFile file = factory.createFileFromText("dummy.regexp", RegExpFileType.INSTANCE, text);
final RegExpPattern pattern = PsiTreeUtil.getChildOfType(file, RegExpPattern.class);
assert pattern != null;
return pattern;
}
use of org.intellij.lang.regexp.psi.RegExpPattern in project intellij-community by JetBrains.
the class GroupSurrounder method surroundElements.
@Nullable
public TextRange surroundElements(@NotNull Project project, @NotNull Editor editor, @NotNull PsiElement[] elements) throws IncorrectOperationException {
assert elements.length == 1 || PsiTreeUtil.findCommonParent(elements) == elements[0].getParent();
final PsiElement e = elements[0];
final ASTNode node = e.getNode();
assert node != null;
final ASTNode parent = node.getTreeParent();
final StringBuilder s = new StringBuilder();
for (int i = 0; i < elements.length; i++) {
final PsiElement element = elements[i];
if (element instanceof RegExpElementImpl) {
s.append(((RegExpElementImpl) element).getUnescapedText());
} else {
s.append(element.getText());
}
if (i > 0) {
final ASTNode child = element.getNode();
assert child != null;
parent.removeChild(child);
}
}
final PsiFileFactory factory = PsiFileFactory.getInstance(project);
final PsiFile f = factory.createFileFromText("dummy.regexp", RegExpFileType.INSTANCE, makeReplacement(s));
final RegExpPattern pattern = PsiTreeUtil.getChildOfType(f, RegExpPattern.class);
assert pattern != null;
final RegExpAtom element = pattern.getBranches()[0].getAtoms()[0];
if (isInsideStringLiteral(e)) {
final Document doc = editor.getDocument();
PsiDocumentManager.getInstance(project).doPostponedOperationsAndUnblockDocument(doc);
final TextRange tr = e.getTextRange();
doc.replaceString(tr.getStartOffset(), tr.getEndOffset(), StringUtil.escapeStringCharacters(element.getText()));
return TextRange.from(e.getTextRange().getEndOffset(), 0);
} else {
final PsiElement n = e.replace(element);
return TextRange.from(n.getTextRange().getEndOffset(), 0);
}
}
use of org.intellij.lang.regexp.psi.RegExpPattern in project intellij-community by JetBrains.
the class SimplifyQuantifierAction method invoke.
public void invoke(@NotNull Project project, Editor editor, PsiFile file) throws IncorrectOperationException {
if (myReplacement == null) {
myQuantifier.delete();
} else {
final PsiFileFactory factory = PsiFileFactory.getInstance(project);
final ASTNode modifier = myQuantifier.getModifier();
final PsiFile f = factory.createFileFromText("dummy.regexp", RegExpFileType.INSTANCE, "a" + myReplacement + (modifier != null ? modifier.getText() : ""));
final RegExpPattern pattern = PsiTreeUtil.getChildOfType(f, RegExpPattern.class);
assert pattern != null;
final RegExpClosure closure = (RegExpClosure) pattern.getBranches()[0].getAtoms()[0];
myQuantifier.replace(closure.getQuantifier());
}
}
Aggregations