package fr.adrienbrault.idea.symfony2plugin.templating.path; import com.intellij.openapi.vfs.VfsUtil; import com.intellij.openapi.vfs.VirtualFile; import fr.adrienbrault.idea.symfony2plugin.Settings; import fr.adrienbrault.idea.symfony2plugin.extension.TwigNamespaceExtension; import fr.adrienbrault.idea.symfony2plugin.extension.TwigNamespaceExtensionParameter; import org.jetbrains.annotations.NotNull; import java.util.Arrays; import java.util.Collection; import java.util.Collections; /** * app/Resources/views/foo.html.twig => :foo.html.twig * app/Resources/views/foo.html.twig => foo.html.twig * * @author Daniel Espendiller <daniel@espendiller.net> */ public class GlobalAppTwigNamespaceExtension implements TwigNamespaceExtension { @NotNull @Override public Collection<TwigPath> getNamespaces(@NotNull TwigNamespaceExtensionParameter parameter) { String appDirectoryName = Settings.getInstance(parameter.getProject()).directoryToApp + "/Resources/views"; VirtualFile baseDir = parameter.getProject().getBaseDir(); VirtualFile globalDirectory = VfsUtil.findRelativeFile(baseDir, appDirectoryName.split("/")); if(globalDirectory == null) { return Collections.emptyList(); } String path = globalDirectory.getPath(); return Arrays.asList( new TwigPath(path, TwigPathIndex.MAIN, TwigPathIndex.NamespaceType.BUNDLE), new TwigPath(path, TwigPathIndex.MAIN, TwigPathIndex.NamespaceType.ADD_PATH) ); } }