Skip to content

Commit

Permalink
Builtin Styles: make style(string) public & refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
mattirn committed Jan 23, 2021
1 parent 9a73dac commit cc874f7
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 14 deletions.
10 changes: 5 additions & 5 deletions builtins/src/main/java/org/jline/builtins/Styles.java
Expand Up @@ -17,6 +17,8 @@
import org.jline.utils.StyleResolver;

public class Styles {
protected static final List<String> 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";
Expand All @@ -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);
}

Expand Down Expand Up @@ -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<String, String> colors = Arrays.stream(style.split(":"))
.collect(Collectors.toMap(s -> s.substring(0, s.indexOf('=')),
s -> s.substring(s.indexOf('=') + 1)));
Expand All @@ -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<String> JLINE_NAMED_STYLES = Arrays.asList("blink", "bold", "conceal", "crossed-out"
, "crossedout", "faint", "hidden", "inverse", "inverse-neg", "inverseneg", "italic", "underline");
private static final List<String> COLORS_8 = Arrays.asList("white", "black", "red", "blue", "green", "yellow", "magenta", "cyan");
// https://github.com/lhmouse/nano-win/commit/a7aab18dfeef8a0e8073d5fa420677dc8fe548da
private static final Map<String,Integer> COLORS_NANO = new HashMap<>();
Expand Down Expand Up @@ -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+")
Expand Down
11 changes: 2 additions & 9 deletions groovy/src/main/java/org/jline/script/GroovyEngine.java
Expand Up @@ -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<String, Object> entry : groovyEngine.find().entrySet()) {
Object obj = groovyEngine.getObjectCloner().clone(entry.getValue());
Expand Down Expand Up @@ -1520,7 +1520,7 @@ private CmdDesc checkSyntax(CmdLine line) {
private List<AttributedString> doExceptionMessage(Exception exception) {
List<AttributedString> 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) {
Expand Down Expand Up @@ -1583,13 +1583,6 @@ private int errorIndex(String message, SyntaxException se) {
return out;
}

private static StyleResolver style(String style) {
Map<String, String> 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 {
Expand Down

0 comments on commit cc874f7

Please sign in to comment.