From cc874f7805d881037516489752b2367b8dbd0284 Mon Sep 17 00:00:00 2001 From: mattirn Date: Sat, 23 Jan 2021 17:18:19 +0100 Subject: [PATCH] Builtin Styles: make style(string) public & refactoring --- builtins/src/main/java/org/jline/builtins/Styles.java | 10 +++++----- .../src/main/java/org/jline/script/GroovyEngine.java | 11 ++--------- 2 files changed, 7 insertions(+), 14 deletions(-) diff --git a/builtins/src/main/java/org/jline/builtins/Styles.java b/builtins/src/main/java/org/jline/builtins/Styles.java index f47f9e3d4..dacd7d115 100644 --- a/builtins/src/main/java/org/jline/builtins/Styles.java +++ b/builtins/src/main/java/org/jline/builtins/Styles.java @@ -17,6 +17,8 @@ import org.jline.utils.StyleResolver; public class Styles { + protected static final List ANSI_STYLES = Arrays.asList("blink", "bold", "conceal", "crossed-out" + , "crossedout", "faint", "hidden", "inverse", "inverse-neg", "inverseneg", "italic", "underline"); private static final String DEFAULT_LS_COLORS = "di=1;91:ex=1;92:ln=1;96:fi="; private static final String DEFAULT_HELP_COLORS = "ti=1;34:co=1:ar=3:op=33"; private static final String DEFAULT_PRNT_COLORS = "th=1;34:rn=1;34:rs=,~grey15:mk=1;34:em=31:vs=32"; @@ -41,7 +43,7 @@ public static StyleResolver prntStyle() { return style(PRNT_COLORS, DEFAULT_PRNT_COLORS); } - public static boolean isAnsiStylePattern(String style) { + public static boolean isStylePattern(String style) { return style.matches(STYLE_PATTERN); } @@ -76,7 +78,7 @@ private static String consoleOption(String name) { return out; } - private static StyleResolver style(String style) { + public static StyleResolver style(String style) { Map colors = Arrays.stream(style.split(":")) .collect(Collectors.toMap(s -> s.substring(0, s.indexOf('=')), s -> s.substring(s.indexOf('=') + 1))); @@ -86,8 +88,6 @@ private static StyleResolver style(String style) { protected static class StyleCompiler { private static final String ANSI_VALUE = "[0-9]*(;[0-9]+){0,2}"; private static final String COLORS_24BIT = "[#x][0-9a-fA-F]{6}"; - private static final List JLINE_NAMED_STYLES = Arrays.asList("blink", "bold", "conceal", "crossed-out" - , "crossedout", "faint", "hidden", "inverse", "inverse-neg", "inverseneg", "italic", "underline"); private static final List COLORS_8 = Arrays.asList("white", "black", "red", "blue", "green", "yellow", "magenta", "cyan"); // https://github.com/lhmouse/nano-win/commit/a7aab18dfeef8a0e8073d5fa420677dc8fe548da private static final Map COLORS_NANO = new HashMap<>(); @@ -132,7 +132,7 @@ public String getStyle(String reference) { if (!first) { out.append(","); } - if (JLINE_NAMED_STYLES.contains(s)) { + if (ANSI_STYLES.contains(s)) { out.append(s); } else if (COLORS_8.contains(s) || COLORS_NANO.containsKey(s) || s.startsWith("light") || s.startsWith("bright") || s.startsWith("~") || s.startsWith("!") || s.matches("\\d+") diff --git a/groovy/src/main/java/org/jline/script/GroovyEngine.java b/groovy/src/main/java/org/jline/script/GroovyEngine.java index 7f730e09c..b2a1132b9 100644 --- a/groovy/src/main/java/org/jline/script/GroovyEngine.java +++ b/groovy/src/main/java/org/jline/script/GroovyEngine.java @@ -1045,7 +1045,7 @@ public Inspector(GroovyEngine groovyEngine) { this.metaMethodsCompletion = groovyEngine.groovyOption(META_METHODS_COMPLETION, false); this.access = new AccessRules(groovyEngine.groovyOptions()); String gc = groovyEngine.groovyOption(GROOVY_COLORS, null); - groovyColors = gc != null && Styles.isAnsiStylePattern(gc) ? gc : DEFAULT_GROOVY_COLORS; + groovyColors = gc != null && Styles.isStylePattern(gc) ? gc : DEFAULT_GROOVY_COLORS; groovyEngine.getObjectCloner().markCache(); for (Map.Entry entry : groovyEngine.find().entrySet()) { Object obj = groovyEngine.getObjectCloner().clone(entry.getValue()); @@ -1520,7 +1520,7 @@ private CmdDesc checkSyntax(CmdLine line) { private List doExceptionMessage(Exception exception) { List out = new ArrayList<>(); SyntaxHighlighter java = SyntaxHighlighter.build(nanorcSyntax); - StyleResolver resolver = style(groovyColors); + StyleResolver resolver = Styles.style(groovyColors); Pattern header = Pattern.compile("^[a-zA-Z() ]{3,}:(\\s+|$)"); out.add(java.highlight(exception.getClass().getCanonicalName())); if (exception.getMessage() != null) { @@ -1583,13 +1583,6 @@ private int errorIndex(String message, SyntaxException se) { return out; } - private static StyleResolver style(String style) { - Map colors = Arrays.stream(style.split(":")) - .collect(Collectors.toMap(s -> s.substring(0, s.indexOf('=')), - s -> s.substring(s.indexOf('=') + 1))); - return new StyleResolver(colors::get); - } - } private static class ObjectCloner implements Cloner {