use of com.intellij.codeInsight.template.Expression in project intellij-community by JetBrains.
the class MacroParser method parseParameters.
private static void parseParameters(MacroCallNode macroCallNode, Lexer lexer, String expression) {
if (lexer.getTokenType() != MacroTokenType.RPAREN) {
while (lexer.getTokenType() != null) {
Expression node = parseMacro(lexer, expression);
macroCallNode.addParameter(node);
if (lexer.getTokenType() == MacroTokenType.COMMA) {
advance(lexer);
} else {
break;
}
}
}
}
use of com.intellij.codeInsight.template.Expression in project intellij-community by JetBrains.
the class MacroParser method parseVariable.
private static Expression parseVariable(Lexer lexer, String expression) {
String variableName = getString(lexer, expression);
advance(lexer);
if (lexer.getTokenType() == null) {
if (TemplateImpl.END.equals(variableName)) {
return new EmptyNode();
}
return new VariableNode(variableName, null);
}
if (lexer.getTokenType() != MacroTokenType.EQ) {
return new VariableNode(variableName, null);
}
advance(lexer);
Expression node = parseMacro(lexer, expression);
return new VariableNode(variableName, node);
}
use of com.intellij.codeInsight.template.Expression in project intellij-community by JetBrains.
the class HighlightUtils method showRenameTemplate.
public static void showRenameTemplate(PsiElement context, PsiNameIdentifierOwner element, PsiReference... references) {
context = CodeInsightUtilCore.forcePsiPostprocessAndRestoreElement(context);
final Project project = context.getProject();
final FileEditorManager fileEditorManager = FileEditorManager.getInstance(project);
final Editor editor = fileEditorManager.getSelectedTextEditor();
if (editor == null) {
return;
}
final TemplateBuilderImpl builder = new TemplateBuilderImpl(context);
final Expression macroCallNode = new MacroCallNode(new SuggestVariableNameMacro());
final PsiElement identifier = element.getNameIdentifier();
builder.replaceElement(identifier, "PATTERN", macroCallNode, true);
for (PsiReference reference : references) {
builder.replaceElement(reference, "PATTERN", "PATTERN", false);
}
final Template template = builder.buildInlineTemplate();
final TextRange textRange = context.getTextRange();
final int startOffset = textRange.getStartOffset();
editor.getCaretModel().moveToOffset(startOffset);
final TemplateManager templateManager = TemplateManager.getInstance(project);
templateManager.startTemplate(editor, template);
}
use of com.intellij.codeInsight.template.Expression in project intellij-plugins by JetBrains.
the class CreateJSEventMethod method addParameters.
@Override
protected void addParameters(Template template, JSReferenceExpression refExpr, PsiFile file) {
Expression expression = new MyExpression("event");
template.addVariable("$event$", expression, expression, true);
template.addTextSegment(":");
String text = myEventTypeGenerator.compute();
text = ImportUtils.importAndShortenReference(text, refExpr, true, true).first;
template.addTextSegment(text);
}
use of com.intellij.codeInsight.template.Expression in project intellij-community by JetBrains.
the class TestIntegrationUtils method createTestMethodTemplate.
public static Template createTestMethodTemplate(@NotNull MethodKind methodKind, TestFramework descriptor, @NotNull PsiClass targetClass, @Nullable PsiClass sourceClass, @Nullable String name, boolean automatic, Set<String> existingNames) {
FileTemplateDescriptor templateDesc = methodKind.getFileTemplateDescriptor(descriptor);
String templateName = templateDesc.getFileName();
FileTemplate fileTemplate = FileTemplateManager.getInstance(targetClass.getProject()).getCodeTemplate(templateName);
Template template = TemplateManager.getInstance(targetClass.getProject()).createTemplate("", "");
String templateText;
try {
Properties properties = new Properties();
if (sourceClass != null && sourceClass.isValid()) {
properties.setProperty(FileTemplate.ATTRIBUTE_CLASS_NAME, sourceClass.getQualifiedName());
}
templateText = fileTemplate.getText(properties);
} catch (IOException e) {
LOG.warn(e);
templateText = fileTemplate.getText();
}
if (name == null)
name = methodKind.getDefaultName();
if (existingNames != null && !existingNames.add(name)) {
int idx = 1;
while (existingNames.contains(name)) {
final String newName = name + (idx++);
if (existingNames.add(newName)) {
name = newName;
break;
}
}
}
templateText = StringUtil.replace(templateText, "${BODY}\n", "");
int from = 0;
while (true) {
int index = templateText.indexOf("${NAME}", from);
if (index == -1)
break;
template.addTextSegment(templateText.substring(from, index));
if (index > 0 && !Character.isWhitespace(templateText.charAt(index - 1))) {
name = StringUtil.capitalize(name);
} else {
name = StringUtil.decapitalize(name);
}
if (from == 0) {
Expression nameExpr = new ConstantNode(name);
template.addVariable("name", nameExpr, nameExpr, !automatic);
} else {
template.addVariableSegment("name");
}
from = index + "${NAME}".length();
}
template.addTextSegment(templateText.substring(from, templateText.length()));
template.setToIndent(true);
template.setToReformat(true);
template.setToShortenLongNames(true);
return template;
}
Aggregations