You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by sr...@apache.org on 2024/09/05 12:53:45 UTC

(plc4x) 03/03: fix(plc4j/spi): ascii box writer tab and cr fixes

This is an automated email from the ASF dual-hosted git repository.

sruehl pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git

commit 14696d778ccb56463b4ca36c7f424c91da287ff4
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Thu Sep 5 14:53:28 2024 +0200

    fix(plc4j/spi): ascii box writer tab and cr fixes
---
 .../plc4x/java/spi/utils/ascii/AsciiBoxWriter.java |  1 +
 .../java/spi/utils/ascii/AsciiBoxWriterTest.java   | 28 ++++++++++++++++++++++
 2 files changed, 29 insertions(+)

diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/utils/ascii/AsciiBoxWriter.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/utils/ascii/AsciiBoxWriter.java
index 54c9b269ba..8bf7d1e02f 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/utils/ascii/AsciiBoxWriter.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/utils/ascii/AsciiBoxWriter.java
@@ -95,6 +95,7 @@ public class AsciiBoxWriter {
         Objects.requireNonNull(data);
         // Convert dos2unix as that messes with box rendering
         data = data.replaceAll("\r\n", "\n");
+        data = data.replaceAll("\t", "  ");
         AsciiBox rawBox = new AsciiBox(this, data);
         int longestLine = rawBox.width();
         if (charWidth < longestLine) {
diff --git a/plc4j/spi/src/test/java/org/apache/plc4x/java/spi/utils/ascii/AsciiBoxWriterTest.java b/plc4j/spi/src/test/java/org/apache/plc4x/java/spi/utils/ascii/AsciiBoxWriterTest.java
index 1fd26341f8..ba6b80d1b4 100644
--- a/plc4j/spi/src/test/java/org/apache/plc4x/java/spi/utils/ascii/AsciiBoxWriterTest.java
+++ b/plc4j/spi/src/test/java/org/apache/plc4x/java/spi/utils/ascii/AsciiBoxWriterTest.java
@@ -300,6 +300,34 @@ class AsciiBoxWriterTest {
                 "╚═════════════════════════════════════════════╝";
             assertEquals(new AsciiBox(want), AsciiBoxWriter.DEFAULT.boxString(name, data, charWidth));
         }
+
+        @Test
+        void simpleBoxWithTabs(){
+            String name = "tabs";
+            String data = "a\n\tb\n\t\t\t\t\tc";
+            int charWidth = 1;
+            String want = "" +
+                "╔═tabs══════╗\n" +
+                "║     a     ║\n" +
+                "║      b    ║\n" +
+                "║          c║\n" +
+                "╚═══════════╝";
+            assertEquals(new AsciiBox(want), AsciiBoxWriter.DEFAULT.boxString(name, data, charWidth));
+        }
+
+        @Test
+        void simpleBoxWithCR(){
+            String name = "cr";
+            String data = "a\r\nb\r\nc\r\n";
+            int charWidth = 1;
+            String want = ""+
+                "╔═cr╗\n" +
+                "║ a ║\n" +
+                "║ b ║\n" +
+                "║ c ║\n" +
+                "╚═══╝";
+            assertEquals(new AsciiBox(want), AsciiBoxWriter.DEFAULT.boxString(name, data, charWidth));
+        }
     }
 
     @Nested