You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by gn...@apache.org on 2018/04/19 18:07:40 UTC
svn commit: r1829591 - in
/felix/trunk/gogo/jline/src/main/java/org/apache/felix/gogo/jline:
Builtin.java Highlighter.java Posix.java
Author: gnodet
Date: Thu Apr 19 18:07:40 2018
New Revision: 1829591
URL: http://svn.apache.org/viewvc?rev=1829591&view=rev
Log:
[FELIX-5837][gogo][jline] Improve styling support
Modified:
felix/trunk/gogo/jline/src/main/java/org/apache/felix/gogo/jline/Builtin.java
felix/trunk/gogo/jline/src/main/java/org/apache/felix/gogo/jline/Highlighter.java
felix/trunk/gogo/jline/src/main/java/org/apache/felix/gogo/jline/Posix.java
Modified: felix/trunk/gogo/jline/src/main/java/org/apache/felix/gogo/jline/Builtin.java
URL: http://svn.apache.org/viewvc/felix/trunk/gogo/jline/src/main/java/org/apache/felix/gogo/jline/Builtin.java?rev=1829591&r1=1829590&r2=1829591&view=diff
==============================================================================
--- felix/trunk/gogo/jline/src/main/java/org/apache/felix/gogo/jline/Builtin.java (original)
+++ felix/trunk/gogo/jline/src/main/java/org/apache/felix/gogo/jline/Builtin.java Thu Apr 19 18:07:40 2018
@@ -722,12 +722,7 @@ public class Builtin {
type = "";
suffix = "";
}
- String col = Posix.getLsColorMap(session).get(type);
- if (col != null && !col.isEmpty()) {
- return "\033[" + col + "m" + path.getFileName().toString() + "\033[m" + suffix;
- } else {
- return path.getFileName().toString() + suffix;
- }
+ return Posix.applyStyle(path.getFileName().toString(), Posix.getLsColorMap(session), type) + suffix;
}
Modified: felix/trunk/gogo/jline/src/main/java/org/apache/felix/gogo/jline/Highlighter.java
URL: http://svn.apache.org/viewvc/felix/trunk/gogo/jline/src/main/java/org/apache/felix/gogo/jline/Highlighter.java?rev=1829591&r1=1829590&r2=1829591&view=diff
==============================================================================
--- felix/trunk/gogo/jline/src/main/java/org/apache/felix/gogo/jline/Highlighter.java (original)
+++ felix/trunk/gogo/jline/src/main/java/org/apache/felix/gogo/jline/Highlighter.java Thu Apr 19 18:07:40 2018
@@ -201,10 +201,7 @@ public class Highlighter extends Default
}
private void applyStyle(AttributedStringBuilder sb, Map<String, String> colors, Type type) {
- String col = colors.get(type.color);
- if (col != null && !col.isEmpty()) {
- sb.appendAnsi("\033[" + col + "m");
- }
+ Posix.applyStyle(sb, colors, type.color);
}
enum Type {
Modified: felix/trunk/gogo/jline/src/main/java/org/apache/felix/gogo/jline/Posix.java
URL: http://svn.apache.org/viewvc/felix/trunk/gogo/jline/src/main/java/org/apache/felix/gogo/jline/Posix.java?rev=1829591&r1=1829590&r2=1829591&view=diff
==============================================================================
--- felix/trunk/gogo/jline/src/main/java/org/apache/felix/gogo/jline/Posix.java (original)
+++ felix/trunk/gogo/jline/src/main/java/org/apache/felix/gogo/jline/Posix.java Thu Apr 19 18:07:40 2018
@@ -86,9 +86,9 @@ import org.jline.terminal.Attributes;
import org.jline.terminal.Terminal;
import org.jline.utils.AttributedString;
import org.jline.utils.AttributedStringBuilder;
-import org.jline.utils.AttributedStyle;
import org.jline.utils.InfoCmp.Capability;
import org.jline.utils.OSUtils;
+import org.jline.utils.StyleResolver;
/**
* Posix-like utilities.
@@ -1158,13 +1158,9 @@ public class Posix {
type = "";
suffix = "";
}
- String col = colors.get(type);
boolean addSuffix = opt.isSet("F");
- if (col != null && !col.isEmpty()) {
- return "\033[" + col + "m" + path.toString() + "\033[m" + (addSuffix ? suffix : "") + link;
- } else {
- return path.toString() + (addSuffix ? suffix : "") + link;
- }
+ return applyStyle(path.toString(), colors, type)
+ + (addSuffix ? suffix : "") + link;
}
String longDisplay() {
@@ -2058,26 +2054,36 @@ public class Posix {
public static Map<String, String> getColorMap(CommandSession session, String name, String def) {
Object obj = session.get(name + "_COLORS");
String str = obj != null ? obj.toString() : null;
- if (str == null || !str.matches("[a-z]{2}=[0-9]*(;[0-9]+)*(:[a-z]{2}=[0-9]*(;[0-9]+)*)*")) {
+ if (str == null) {
str = def;
}
- return Arrays.stream(str.split(":"))
+ String sep = str.matches("[a-z]{2}=[0-9]*(;[0-9]+)*(:[a-z]{2}=[0-9]*(;[0-9]+)*)*") ? ":" : " ";
+ return Arrays.stream(str.split(sep))
.collect(Collectors.toMap(s -> s.substring(0, s.indexOf('=')),
s -> s.substring(s.indexOf('=') + 1)));
}
- private void applyStyle(AttributedStringBuilder sb, Map<String, String> colors, String... types) {
- String col = null;
+ static String applyStyle(String text, Map<String, String> colors, String... types) {
+ String t = null;
for (String type : types) {
- col = colors.get(type);
- if (col != null) {
+ if (colors.get(type) != null) {
+ t = type;
break;
}
}
- sb.style(AttributedStyle.DEFAULT);
- if (col != null && !col.isEmpty()) {
- sb.appendAnsi("\033[" + col + "m");
+ return new AttributedString(text, new StyleResolver(colors::get).resolve("." + t))
+ .toAnsi();
+ }
+
+ static void applyStyle(AttributedStringBuilder sb, Map<String, String> colors, String... types) {
+ String t = null;
+ for (String type : types) {
+ if (colors.get(type) != null) {
+ t = type;
+ break;
+ }
}
+ sb.style(new StyleResolver(colors::get).resolve("." + t));
}
private static class StdInSource implements Source {