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");