package org.jetbrains.plugins.clojure.repl;
import com.intellij.execution.impl.ConsoleViewImpl;
import com.intellij.execution.console.LanguageConsoleImpl;
import com.intellij.execution.ui.ConsoleViewContentType;
import com.intellij.openapi.util.Key;
import org.intellij.lang.annotations.Language;
import java.util.Collections;
import java.util.regex.Pattern;
/**
* @author ilyas
*/
public class ClojureConsoleHighlightingUtil {
@Language("RegExp")
private static final String OTHER_TOKEN = "_|-|\\*|\\.|\\+|=|&|<|>|\\$|/|\\?|!";
@Language("RegExp")
private static final String LETTER = "([a-zA-Z]" + "|" + OTHER_TOKEN + ")";
@Language("RegExp")
private static final String CLOJURE_IDENTIFIER = LETTER + "(" + LETTER + "|[0-9]" + ")*";
private static final String PROMPT_ARROW = "=>";
public static final String LINE_WITH_PROMPT = CLOJURE_IDENTIFIER + PROMPT_ARROW + ".*";
public static final Pattern CLOJURE_PROMPT_PATTERN = Pattern.compile(CLOJURE_IDENTIFIER + PROMPT_ARROW);
public static final Pattern LINE_WITH_PROMPT_PATTERN = Pattern.compile(LINE_WITH_PROMPT);
/**
* Print highlighted output to the console
* @param console
* @param text
*/
public static void processOutput(LanguageConsoleImpl console, String text, Key attributes) {
final ConsoleViewContentType outputType = ConsoleViewContentType.NORMAL_OUTPUT;
// todo implement multiple cases for error etc.
final ConsoleViewImpl consoleView = console.getHistoryViewer().getUserData(ConsoleViewImpl.CONSOLE_VIEW_IN_EDITOR_VIEW);
if (consoleView != null) {
consoleView.print(text, outputType);
}
}
}