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 {