package fr.adrienbrault.idea.symfony2plugin.templating.completion; import com.intellij.codeInsight.completion.InsertHandler; import com.intellij.codeInsight.completion.InsertionContext; import com.jetbrains.php.completion.insert.PhpInsertHandlerUtil; import fr.adrienbrault.idea.symfony2plugin.routing.RouteLookupElement; import org.apache.commons.lang.StringUtils; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.List; import java.util.Set; /** * @author Daniel Espendiller <daniel@espendiller.net> */ public class TwigPathFunctionInsertHandler implements InsertHandler<RouteLookupElement> { private static final TwigPathFunctionInsertHandler instance = new TwigPathFunctionInsertHandler(); public void handleInsert(@NotNull InsertionContext context, @NotNull RouteLookupElement lookupElement) { context.getDocument().insertString(context.getStartOffset(), "{{ path('"); StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append("'"); Set<String> vars = lookupElement.getRoute().getVariables(); if(vars.size() > 0) { List<String> items = new ArrayList<>(); for(String var: vars) { items.add(String.format("'%s': '%s'", var, "x")); } stringBuilder.append(", {"); stringBuilder.append(StringUtils.join(items, ", ")); stringBuilder.append("}"); } stringBuilder.append(") }}"); PhpInsertHandlerUtil.insertStringAtCaret(context.getEditor(), stringBuilder.toString()); } public static TwigPathFunctionInsertHandler getInstance(){ return instance; } }