package com.siberika.idea.pascal.jps.util; import com.intellij.execution.process.ProcessAdapter; import com.intellij.execution.process.ProcessEvent; import com.intellij.openapi.util.Key; public abstract class PascalConsoleProcessAdapter extends ProcessAdapter { private StringBuilder sb = new StringBuilder(); abstract protected boolean onLine(String text); @Override public void onTextAvailable(ProcessEvent event, Key outputType) { String str = event.getText(); sb.append(str); if (str.endsWith("\n")) { doProcessLine(); } } @Override public void processTerminated(ProcessEvent event) { super.processTerminated(event); if (sb.length() > 0) { doProcessLine(); } } private void doProcessLine() { onLine(sb.toString()); sb = new StringBuilder(); } }