From 510f94c1eca01057ac961ad9ea2f463de8015136 Mon Sep 17 00:00:00 2001
From: wvengen
Date: Fri, 18 Jul 2014 17:55:08 +0200
Subject: [PATCH 1/3] escape build log html (closes sahan#8)
---
travisjr/assets/ascii_art | 44 +++++++++----------
.../lonepulse/travisjr/BuildInfoActivity.java | 7 +--
.../lonepulse/travisjr/util/TextUtils.java | 12 +++++
3 files changed, 38 insertions(+), 25 deletions(-)
diff --git a/travisjr/assets/ascii_art b/travisjr/assets/ascii_art
index 8b50b36..7984e13 100644
--- a/travisjr/assets/ascii_art
+++ b/travisjr/assets/ascii_art
@@ -1,22 +1,22 @@
- _____ _____ _____ _____ _____ _____ _____ _____
- /\ \ /\ \ /\ \ /\ \ /\ \ /\ \ /\ \ /\ \
- /::\ \ /::\ \ /::\ \ /::\____\ /::\ \ /::\ \ /::\ \ /::\ \
- \:::\ \ /::::\ \ /::::\ \ /:::/ / \:::\ \ /::::\ \ /::::\ \ \:::\ \
- \:::\ \ /::::::\ \ /::::::\ \ /:::/ / \:::\ \ /::::::\ \ /::::::\ \ \:::\ \
- \:::\ \ /:::/\:::\ \ /:::/\:::\ \ /:::/ / \:::\ \ /:::/\:::\ \ /:::/\:::\ \ \:::\ \
- \:::\ \ /:::/__\:::\ \ /:::/__\:::\ \ /:::/____/ \:::\ \ /:::/__\:::\ \ /:::/ \:::\ \ \:::\ \
- /::::\ \ /::::\ \:::\ \ /::::\ \:::\ \ |::| | /::::\ \ \:::\ \:::\ \ /:::/ \:::\ \ /::::\ \
- /::::::\ \ /::::::\ \:::\ \ /::::::\ \:::\ \ |::| | _____ ____ /::::::\ \ ___\:::\ \:::\ \ /:::/ / \:::\ \ ____ /::::::\ \
- /:::/\:::\ \ /:::/\:::\ \:::\____\ /:::/\:::\ \:::\ \ |::| | /\ \ /\ \ /:::/\:::\ \ /\ \:::\ \:::\ \ /:::/ / \:::\ \ /\ \ /:::/\:::\ \
- /:::/ \:::\____\/:::/ \:::\ \:::| |/:::/ \:::\ \:::\____\|::| | /::\____\/::\ \/:::/ \:::\____\/::\ \:::\ \:::\____\ /:::/____/ \:::\____\/::\ \/:::/ \:::\____\
- /:::/ \::/ /\::/ |::::\ /:::|____|\::/ \:::\ /:::/ /|::| | /:::/ /\:::\ /:::/ \::/ /\:::\ \:::\ \::/ / \:::\ \ \::/ /\:::\ /:::/ \::/ /
- /:::/ / \/____/ \/____|:::::\/:::/ / \/____/ \:::\/:::/ / |::| | /:::/ / \:::\/:::/ / \/____/ \:::\ \:::\ \/____/ \:::\ \ \/____/ \:::\/:::/ / \/____/
- /:::/ / |:::::::::/ / \::::::/ / |::|____|/:::/ / \::::::/ / \:::\ \:::\ \ \:::\ \ \::::::/ /
-/:::/ / |::|\::::/ / \::::/ / |:::::::::::/ / \::::/____/ \:::\ \:::\____\ \:::\ \ \::::/____/
-\::/ / |::| \::/____/ /:::/ / \::::::::::/____/ \:::\ \ \:::\ /:::/ / \:::\ \ \:::\ \
- \/____/ |::| ~| /:::/ / ~~~~~~~~~~ \:::\ \ \:::\/:::/ / \:::\ \ \:::\ \
- |::| | /:::/ / \:::\ \ \::::::/ / \:::\ \ \:::\ \
- \::| | /:::/ / \:::\____\ \::::/ / \:::\____\ \:::\____\
- \:| | \::/ / \::/ / \::/ / \::/ / \::/ /
- \|___| \/____/ \/____/ \/____/ \/____/ \/____/
-
\ No newline at end of file
+ _____ _____ _____ _____ _____ _____ _____ _____
+ /\ \ /\ \ /\ \ /\ \ /\ \ /\ \ /\ \ /\ \
+ /::\ \ /::\ \ /::\ \ /::\____\ /::\ \ /::\ \ /::\ \ /::\ \
+ \:::\ \ /::::\ \ /::::\ \ /:::/ / \:::\ \ /::::\ \ /::::\ \ \:::\ \
+ \:::\ \ /::::::\ \ /::::::\ \ /:::/ / \:::\ \ /::::::\ \ /::::::\ \ \:::\ \
+ \:::\ \ /:::/\:::\ \ /:::/\:::\ \ /:::/ / \:::\ \ /:::/\:::\ \ /:::/\:::\ \ \:::\ \
+ \:::\ \ /:::/__\:::\ \ /:::/__\:::\ \ /:::/____/ \:::\ \ /:::/__\:::\ \ /:::/ \:::\ \ \:::\ \
+ /::::\ \ /::::\ \:::\ \ /::::\ \:::\ \ |::| | /::::\ \ \:::\ \:::\ \ /:::/ \:::\ \ /::::\ \
+ /::::::\ \ /::::::\ \:::\ \ /::::::\ \:::\ \ |::| | _____ ____ /::::::\ \ ___\:::\ \:::\ \ /:::/ / \:::\ \ ____ /::::::\ \
+ /:::/\:::\ \ /:::/\:::\ \:::\____\ /:::/\:::\ \:::\ \ |::| | /\ \ /\ \ /:::/\:::\ \ /\ \:::\ \:::\ \ /:::/ / \:::\ \ /\ \ /:::/\:::\ \
+ /:::/ \:::\____\/:::/ \:::\ \:::| |/:::/ \:::\ \:::\____\|::| | /::\____\/::\ \/:::/ \:::\____\/::\ \:::\ \:::\____\ /:::/____/ \:::\____\/::\ \/:::/ \:::\____\
+ /:::/ \::/ /\::/ |::::\ /:::|____|\::/ \:::\ /:::/ /|::| | /:::/ /\:::\ /:::/ \::/ /\:::\ \:::\ \::/ / \:::\ \ \::/ /\:::\ /:::/ \::/ /
+ /:::/ / \/____/ \/____|:::::\/:::/ / \/____/ \:::\/:::/ / |::| | /:::/ / \:::\/:::/ / \/____/ \:::\ \:::\ \/____/ \:::\ \ \/____/ \:::\/:::/ / \/____/
+ /:::/ / |:::::::::/ / \::::::/ / |::|____|/:::/ / \::::::/ / \:::\ \:::\ \ \:::\ \ \::::::/ /
+/:::/ / |::|\::::/ / \::::/ / |:::::::::::/ / \::::/____/ \:::\ \:::\____\ \:::\ \ \::::/____/
+\::/ / |::| \::/____/ /:::/ / \::::::::::/____/ \:::\ \ \:::\ /:::/ / \:::\ \ \:::\ \
+ \/____/ |::| ~| /:::/ / ~~~~~~~~~~ \:::\ \ \:::\/:::/ / \:::\ \ \:::\ \
+ |::| | /:::/ / \:::\ \ \::::::/ / \:::\ \ \:::\ \
+ \::| | /:::/ / \:::\____\ \::::/ / \:::\____\ \:::\____\
+ \:| | \::/ / \::/ / \::/ / \::/ / \::/ /
+ \|___| \/____/ \/____/ \/____/ \/____/ \/____/
+
diff --git a/travisjr/src/main/java/com/lonepulse/travisjr/BuildInfoActivity.java b/travisjr/src/main/java/com/lonepulse/travisjr/BuildInfoActivity.java
index 0f9e9f7..43a3c07 100644
--- a/travisjr/src/main/java/com/lonepulse/travisjr/BuildInfoActivity.java
+++ b/travisjr/src/main/java/com/lonepulse/travisjr/BuildInfoActivity.java
@@ -72,6 +72,7 @@
import com.lonepulse.travisjr.util.BuildUtils;
import com.lonepulse.travisjr.util.DateUtils;
import com.lonepulse.travisjr.util.IntentUtils;
+import com.lonepulse.travisjr.util.TextUtils;
import com.lonepulse.travisjr.util.Res;
/**
@@ -109,7 +110,7 @@ public class BuildInfoActivity extends TravisJrActivity {
while(scanner.hasNextLine()) {
- ASCII_ART.append(scanner.nextLine()).append("
");
+ ASCII_ART.append(scanner.nextLine()+"\n");
}
ASCII_ART.append("
");
@@ -323,12 +324,12 @@ private void loadLogData(String logData) {
final StringBuilder html = new StringBuilder()
.append("")
- .append(logData.replaceAll("(\r\n|\n)", "
"))
+ .append(TextUtils.escapeHtml(logData).replaceAll("(\r\n|\n)", "
"))
.append("");
log.loadData(html.toString(), "text/html", "utf-8");
}
-
+
@UI(UI_SYNC)
private void uiSync() {
diff --git a/travisjr/src/main/java/com/lonepulse/travisjr/util/TextUtils.java b/travisjr/src/main/java/com/lonepulse/travisjr/util/TextUtils.java
index feb5aad..5fe39eb 100644
--- a/travisjr/src/main/java/com/lonepulse/travisjr/util/TextUtils.java
+++ b/travisjr/src/main/java/com/lonepulse/travisjr/util/TextUtils.java
@@ -92,4 +92,16 @@ public static String isAvailable(Object object, String ifNotAvailable) {
}
+
+ /**
+ * Escape HTML
+ *
+ * @param s
+ * string potentially containing HTML
+ * @return escaped string
+ */
+ public static String escapeHtml(String s) {
+
+ return s.replaceAll("&", "&").replaceAll("<", "<").replaceAll(">", ">");
+ }
}
From a3995e909d523d45e03197be51c964672632f759 Mon Sep 17 00:00:00 2001
From: wvengen
Date: Fri, 18 Jul 2014 22:42:22 +0200
Subject: [PATCH 2/3] show ansi escape sequences in build log
(closes sahan#10)
---
travisjr/pom.xml | 10 +++++++-
.../lonepulse/travisjr/BuildInfoActivity.java | 2 +-
.../lonepulse/travisjr/util/TextUtils.java | 25 +++++++++++++++----
3 files changed, 30 insertions(+), 7 deletions(-)
diff --git a/travisjr/pom.xml b/travisjr/pom.xml
index 5a7079c..e88fe25 100644
--- a/travisjr/pom.xml
+++ b/travisjr/pom.xml
@@ -48,4 +48,12 @@
-
\ No newline at end of file
+
+
+
+ org.fusesource.jansi
+ jansi
+ 1.11
+
+
+
diff --git a/travisjr/src/main/java/com/lonepulse/travisjr/BuildInfoActivity.java b/travisjr/src/main/java/com/lonepulse/travisjr/BuildInfoActivity.java
index 43a3c07..b94bfb8 100644
--- a/travisjr/src/main/java/com/lonepulse/travisjr/BuildInfoActivity.java
+++ b/travisjr/src/main/java/com/lonepulse/travisjr/BuildInfoActivity.java
@@ -324,7 +324,7 @@ private void loadLogData(String logData) {
final StringBuilder html = new StringBuilder()
.append("")
- .append(TextUtils.escapeHtml(logData).replaceAll("(\r\n|\n)", "
"))
+ .append(TextUtils.ansi2html(logData).replaceAll("(\r\n|\n)", "
"))
.append("");
log.loadData(html.toString(), "text/html", "utf-8");
diff --git a/travisjr/src/main/java/com/lonepulse/travisjr/util/TextUtils.java b/travisjr/src/main/java/com/lonepulse/travisjr/util/TextUtils.java
index 5fe39eb..8fbbb78 100644
--- a/travisjr/src/main/java/com/lonepulse/travisjr/util/TextUtils.java
+++ b/travisjr/src/main/java/com/lonepulse/travisjr/util/TextUtils.java
@@ -20,6 +20,10 @@
* #L%
*/
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+
+import org.fusesource.jansi.HtmlAnsiOutputStream;
import com.lonepulse.travisjr.R;
import com.lonepulse.travisjr.app.TravisJr;
@@ -94,14 +98,25 @@ public static String isAvailable(Object object, String ifNotAvailable) {
}
/**
- * Escape HTML
+ *
Convert text to HTML, including ANSI escape sequences.
*
* @param s
- * string potentially containing HTML
- * @return escaped string
+ * text to convert to HTML
+ * @return HTML
*/
- public static String escapeHtml(String s) {
+ public static String ansi2html(String s) {
+
+ try {
+ ByteArrayOutputStream os = new ByteArrayOutputStream();
+ HtmlAnsiOutputStream hos = new HtmlAnsiOutputStream(os);
- return s.replaceAll("&", "&").replaceAll("<", "<").replaceAll(">", ">");
+ hos.write(s.getBytes("UTF-8"));
+ hos.close();
+ return new String(os.toByteArray(), "UTF-8");
+ }
+ catch(IOException e) {
+
+ return s;
+ }
}
}
From 41f3c9a94221435b12ffc552c9a6b677e43df563 Mon Sep 17 00:00:00 2001
From: wvengen
Date: Fri, 18 Jul 2014 22:53:27 +0200
Subject: [PATCH 3/3] fix ascii banner display
---
travisjr/assets/ascii_art | 44 +++++++++----------
.../lonepulse/travisjr/BuildInfoActivity.java | 15 ++++---
2 files changed, 30 insertions(+), 29 deletions(-)
diff --git a/travisjr/assets/ascii_art b/travisjr/assets/ascii_art
index 7984e13..114814d 100644
--- a/travisjr/assets/ascii_art
+++ b/travisjr/assets/ascii_art
@@ -1,22 +1,22 @@
- _____ _____ _____ _____ _____ _____ _____ _____
- /\ \ /\ \ /\ \ /\ \ /\ \ /\ \ /\ \ /\ \
- /::\ \ /::\ \ /::\ \ /::\____\ /::\ \ /::\ \ /::\ \ /::\ \
- \:::\ \ /::::\ \ /::::\ \ /:::/ / \:::\ \ /::::\ \ /::::\ \ \:::\ \
- \:::\ \ /::::::\ \ /::::::\ \ /:::/ / \:::\ \ /::::::\ \ /::::::\ \ \:::\ \
- \:::\ \ /:::/\:::\ \ /:::/\:::\ \ /:::/ / \:::\ \ /:::/\:::\ \ /:::/\:::\ \ \:::\ \
- \:::\ \ /:::/__\:::\ \ /:::/__\:::\ \ /:::/____/ \:::\ \ /:::/__\:::\ \ /:::/ \:::\ \ \:::\ \
- /::::\ \ /::::\ \:::\ \ /::::\ \:::\ \ |::| | /::::\ \ \:::\ \:::\ \ /:::/ \:::\ \ /::::\ \
- /::::::\ \ /::::::\ \:::\ \ /::::::\ \:::\ \ |::| | _____ ____ /::::::\ \ ___\:::\ \:::\ \ /:::/ / \:::\ \ ____ /::::::\ \
- /:::/\:::\ \ /:::/\:::\ \:::\____\ /:::/\:::\ \:::\ \ |::| | /\ \ /\ \ /:::/\:::\ \ /\ \:::\ \:::\ \ /:::/ / \:::\ \ /\ \ /:::/\:::\ \
- /:::/ \:::\____\/:::/ \:::\ \:::| |/:::/ \:::\ \:::\____\|::| | /::\____\/::\ \/:::/ \:::\____\/::\ \:::\ \:::\____\ /:::/____/ \:::\____\/::\ \/:::/ \:::\____\
- /:::/ \::/ /\::/ |::::\ /:::|____|\::/ \:::\ /:::/ /|::| | /:::/ /\:::\ /:::/ \::/ /\:::\ \:::\ \::/ / \:::\ \ \::/ /\:::\ /:::/ \::/ /
- /:::/ / \/____/ \/____|:::::\/:::/ / \/____/ \:::\/:::/ / |::| | /:::/ / \:::\/:::/ / \/____/ \:::\ \:::\ \/____/ \:::\ \ \/____/ \:::\/:::/ / \/____/
- /:::/ / |:::::::::/ / \::::::/ / |::|____|/:::/ / \::::::/ / \:::\ \:::\ \ \:::\ \ \::::::/ /
-/:::/ / |::|\::::/ / \::::/ / |:::::::::::/ / \::::/____/ \:::\ \:::\____\ \:::\ \ \::::/____/
-\::/ / |::| \::/____/ /:::/ / \::::::::::/____/ \:::\ \ \:::\ /:::/ / \:::\ \ \:::\ \
- \/____/ |::| ~| /:::/ / ~~~~~~~~~~ \:::\ \ \:::\/:::/ / \:::\ \ \:::\ \
- |::| | /:::/ / \:::\ \ \::::::/ / \:::\ \ \:::\ \
- \::| | /:::/ / \:::\____\ \::::/ / \:::\____\ \:::\____\
- \:| | \::/ / \::/ / \::/ / \::/ / \::/ /
- \|___| \/____/ \/____/ \/____/ \/____/ \/____/
-
+ _____ _____ _____ _____ _____ _____ _____ _____
+ /\ \ /\ \ /\ \ /\ \ /\ \ /\ \ /\ \ /\ \
+ /::\ \ /::\ \ /::\ \ /::\____\ /::\ \ /::\ \ /::\ \ /::\ \
+ \:::\ \ /::::\ \ /::::\ \ /:::/ / \:::\ \ /::::\ \ /::::\ \ \:::\ \
+ \:::\ \ /::::::\ \ /::::::\ \ /:::/ / \:::\ \ /::::::\ \ /::::::\ \ \:::\ \
+ \:::\ \ /:::/\:::\ \ /:::/\:::\ \ /:::/ / \:::\ \ /:::/\:::\ \ /:::/\:::\ \ \:::\ \
+ \:::\ \ /:::/__\:::\ \ /:::/__\:::\ \ /:::/____/ \:::\ \ /:::/__\:::\ \ /:::/ \:::\ \ \:::\ \
+ /::::\ \ /::::\ \:::\ \ /::::\ \:::\ \ |::| | /::::\ \ \:::\ \:::\ \ /:::/ \:::\ \ /::::\ \
+ /::::::\ \ /::::::\ \:::\ \ /::::::\ \:::\ \ |::| | _____ ____ /::::::\ \ ___\:::\ \:::\ \ /:::/ / \:::\ \ ____ /::::::\ \
+ /:::/\:::\ \ /:::/\:::\ \:::\____\ /:::/\:::\ \:::\ \ |::| | /\ \ /\ \ /:::/\:::\ \ /\ \:::\ \:::\ \ /:::/ / \:::\ \ /\ \ /:::/\:::\ \
+ /:::/ \:::\____\/:::/ \:::\ \:::| |/:::/ \:::\ \:::\____\|::| | /::\____\/::\ \/:::/ \:::\____\/::\ \:::\ \:::\____\ /:::/____/ \:::\____\/::\ \/:::/ \:::\____\
+ /:::/ \::/ /\::/ |::::\ /:::|____|\::/ \:::\ /:::/ /|::| | /:::/ /\:::\ /:::/ \::/ /\:::\ \:::\ \::/ / \:::\ \ \::/ /\:::\ /:::/ \::/ /
+ /:::/ / \/____/ \/____|:::::\/:::/ / \/____/ \:::\/:::/ / |::| | /:::/ / \:::\/:::/ / \/____/ \:::\ \:::\ \/____/ \:::\ \ \/____/ \:::\/:::/ / \/____/
+ /:::/ / |:::::::::/ / \::::::/ / |::|____|/:::/ / \::::::/ / \:::\ \:::\ \ \:::\ \ \::::::/ /
+/:::/ / |::|\::::/ / \::::/ / |:::::::::::/ / \::::/____/ \:::\ \:::\____\ \:::\ \ \::::/____/
+\::/ / |::| \::/____/ /:::/ / \::::::::::/____/ \:::\ \ \:::\ /:::/ / \:::\ \ \:::\ \
+ \/____/ |::| ~| /:::/ / ~~~~~~~~~~ \:::\ \ \:::\/:::/ / \:::\ \ \:::\ \
+ |::| | /:::/ / \:::\ \ \::::::/ / \:::\ \ \:::\ \
+ \::| | /:::/ / \:::\____\ \::::/ / \:::\____\ \:::\____\
+ \:| | \::/ / \::/ / \::/ / \::/ / \::/ /
+ \|___| \/____/ \/____/ \/____/ \/____/ \/____/
+
diff --git a/travisjr/src/main/java/com/lonepulse/travisjr/BuildInfoActivity.java b/travisjr/src/main/java/com/lonepulse/travisjr/BuildInfoActivity.java
index b94bfb8..e796aad 100644
--- a/travisjr/src/main/java/com/lonepulse/travisjr/BuildInfoActivity.java
+++ b/travisjr/src/main/java/com/lonepulse/travisjr/BuildInfoActivity.java
@@ -106,7 +106,7 @@ public class BuildInfoActivity extends TravisJrActivity {
try {
scanner = new Scanner(TravisJr.Application.getContext().getAssets().open("ascii_art"));
- ASCII_ART.append("");
+ ASCII_ART.append("");
while(scanner.hasNextLine()) {
@@ -220,7 +220,7 @@ protected void onCreate(Bundle savedInstanceState) {
settings.setRenderPriority(RenderPriority.HIGH);
settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
- loadLogData(ASCII_ART.toString());
+ loadLogData(ASCII_ART.toString(), false);
}
@Override
@@ -305,13 +305,13 @@ private void updateLogChooser(final List logIds) {
@Override
public void onItemSelected(AdapterView> parent, View view, int position, long id) {
- loadLogData(logs.get(logIds.get(position)).toString());
+ loadLogData(logs.get(logIds.get(position)).toString(), true);
}
@Override
public void onNothingSelected(AdapterView> parent) {
- loadLogData(logs.get(logs.firstKey()).toString());
+ loadLogData(logs.get(logs.firstKey()).toString(), true);
}
});
@@ -319,12 +319,13 @@ public void onNothingSelected(AdapterView> parent) {
}
}
- private void loadLogData(String logData) {
-
+ private void loadLogData(String logData, Boolean escape) {
+
+ if (escape) logData = TextUtils.ansi2html(logData);
final StringBuilder html = new StringBuilder()
.append("")
- .append(TextUtils.ansi2html(logData).replaceAll("(\r\n|\n)", "
"))
+ .append(logData.replaceAll("(\r\n|\n)", "
"))
.append("");
log.loadData(html.toString(), "text/html", "utf-8");