package org.elixir_lang.mix.util; import com.intellij.openapi.project.Project; import com.intellij.openapi.project.ProjectManager; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiFileFactory; import org.elixir_lang.ElixirFileType; import org.elixir_lang.psi.ElixirFile; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; /** * Created by zyuyou on 15/7/2. */ public class ElixirScriptFileUtil { @NotNull public static String readLine(InputStream stream) { BufferedReader errReader = new BufferedReader(new InputStreamReader(stream)); try { return StringUtil.notNullize(errReader.readLine()); } catch (IOException ignore) { } finally { try { errReader.close(); } catch (IOException ignore) { } } return ""; } @Nullable public static ElixirFile createPsi(@NotNull VirtualFile file){ if(file.getFileType() != ElixirFileType.SCRIPT) return null; try{ String text = StringUtil.convertLineSeparators(VfsUtilCore.loadText(file)); Project defaultProject = ProjectManager.getInstance().getDefaultProject(); return (ElixirFile) PsiFileFactory.getInstance(defaultProject).createFileFromText(file.getName(), file.getFileType(), text); } catch (IOException e) { return null; } } }