package org.elixir_lang.beam; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.stubs.BinaryFileStubBuilder; import com.intellij.psi.stubs.PsiFileStub; import com.intellij.psi.stubs.Stub; import com.intellij.util.indexing.FileContent; import org.elixir_lang.beam.psi.BeamFileImpl; import org.jetbrains.annotations.Nullable; public class StubBuilder implements BinaryFileStubBuilder { private static final Logger LOGGER = Logger.getInstance(StubBuilder.class); private static final int STUB_VERSION = 0; /** * @param file a .beam file * @return {@code true} (accepts all files because it is only registered for BEAM file type */ @Override public boolean acceptsFile(VirtualFile file) { return true; } @Nullable @Override public Stub buildStubTree(FileContent fileContent) { byte[] content = fileContent.getContent(); PsiFileStub<?> stub = BeamFileImpl.buildFileStub(content); if (stub == null) { LOGGER.info("No stub built for file " + fileContent); } return stub; } @Override public int getStubVersion() { return STUB_VERSION; } }