diff --git a/assets/.assets.index b/assets/.assets.index
index fda23e3..b5fa242 100644
--- a/assets/.assets.index
+++ b/assets/.assets.index
@@ -1,5 +1,5 @@
1
-46
+47
AboutPage.qml
AppCover.qml
LoginSheet.qml
@@ -46,3 +46,4 @@ icons/star-o.png
icons/star.png
StreamTab.qml
WebViewSheet.qml
+parser.js
diff --git a/assets/PostItem.qml b/assets/PostItem.qml
index 5a58eb2..41cd07c 100644
--- a/assets/PostItem.qml
+++ b/assets/PostItem.qml
@@ -20,6 +20,7 @@
import bb.cascades 1.4
import org.labsquare 1.0
import "moment.js" as Moment
+import "parser.js" as Parser
Container {
id: postitem
@@ -34,6 +35,7 @@ Container {
enabled: (ListItemData.is_deleted) ? false : true
opacity: (ListItemData.is_deleted) ? 0.5 : 1.0
+ visible: (ListItemData.is_deleted) ? false : true
Container {
layout: DockLayout {}
@@ -136,25 +138,10 @@ Container {
topMargin: ui.sdu(2.0)
bottomMargin: ui.sdu(2.0)
Label {
- //text: (ListItemData.is_deleted) ? qsTr("{{POST DELETED}}") : (ListItemData.content.html).replace(/
/g,"
")
- text: {
- var text
- if (ListItemData.is_deleted) {
- text = "{{POST DELETED}}"
- } else {
- text = (ListItemData.content.html).replace(/
/g,"
")
- text = text = text.replace(/&[^amp;]/g,"&");
- }
- return text
- }
+ text: Parser.parsePostData(ListItemData.content.html)
multiline: true
textFormat: TextFormat.Html
}
-// Label {
-// text: ListItemData.content.html
-// multiline: true
-// textFormat: TextFormat.Plain
-// }
}
Container {
layout: DockLayout {}
@@ -179,7 +166,7 @@ Container {
}
contextActions: [
ActionSet {
- title: ListItemData.user.username
+ title: "[" + ListItemData.id + "] " + ListItemData.user.username
ActionItem {
title: qsTr("Reply")
onTriggered: {
diff --git a/assets/parser.js b/assets/parser.js
new file mode 100644
index 0000000..a4e8c07
--- /dev/null
+++ b/assets/parser.js
@@ -0,0 +1,363 @@
+/*
+ * Copyright (C) 2016-2017 Morgan McMillian
+ *
+ * This file is apart of the Goober application, a client for pnut.io
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+function parsePostData(t) {
+ t = t.replace(/!/g,"\u0021");
+ t = t.replace(/"/g,"\u0022");
+ t = t.replace(/#/g,"\u0023");
+ t = t.replace(/$/g,"\u0024");
+ t = t.replace(/%/g,"\u0025");
+ t = t.replace(/&/g,"\u0026");
+ t = t.replace(/'/g,"\u0027");
+ t = t.replace(/(/g,"\u0028");
+ t = t.replace(/)/g,"\u0029");
+ t = t.replace(/*/g,"\u002A");
+ t = t.replace(/+/g,"\u002B");
+ t = t.replace(/,/g,"\u002C");
+ t = t.replace(/-/g,"\u002D");
+ t = t.replace(/./g,"\u002E");
+ t = t.replace(///g,"\u002F");
+ t = t.replace(/0/g,"\u0030");
+ t = t.replace(/1/g,"\u0031");
+ t = t.replace(/2/g,"\u0032");
+ t = t.replace(/3/g,"\u0033");
+ t = t.replace(/4/g,"\u0034");
+ t = t.replace(/5/g,"\u0035");
+ t = t.replace(/6/g,"\u0036");
+ t = t.replace(/7/g,"\u0037");
+ t = t.replace(/8/g,"\u0038");
+ t = t.replace(/9/g,"\u0039");
+ t = t.replace(/:/g,"\u003A");
+ t = t.replace(/;/g,"\u003B");
+ t = t.replace(/</g,"\u003C");
+ t = t.replace(/=/g,"\u003D");
+ t = t.replace(/>/g,"\u003E");
+ t = t.replace(/?/g,"\u003F");
+ t = t.replace(/@/g,"\u0040");
+ t = t.replace(/A/g,"\u0041");
+ t = t.replace(/B/g,"\u0042");
+ t = t.replace(/C/g,"\u0043");
+ t = t.replace(/D/g,"\u0044");
+ t = t.replace(/E/g,"\u0045");
+ t = t.replace(/F/g,"\u0046");
+ t = t.replace(/G/g,"\u0047");
+ t = t.replace(/H/g,"\u0048");
+ t = t.replace(/I/g,"\u0049");
+ t = t.replace(/J/g,"\u004A");
+ t = t.replace(/K/g,"\u004B");
+ t = t.replace(/L/g,"\u004C");
+ t = t.replace(/M/g,"\u004D");
+ t = t.replace(/N/g,"\u004E");
+ t = t.replace(/O/g,"\u004F");
+ t = t.replace(/P/g,"\u0050");
+ t = t.replace(/Q/g,"\u0051");
+ t = t.replace(/R/g,"\u0052");
+ t = t.replace(/S/g,"\u0053");
+ t = t.replace(/T/g,"\u0054");
+ t = t.replace(/U/g,"\u0055");
+ t = t.replace(/V/g,"\u0056");
+ t = t.replace(/W/g,"\u0057");
+ t = t.replace(/X/g,"\u0058");
+ t = t.replace(/Y/g,"\u0059");
+ t = t.replace(/Z/g,"\u005A");
+ t = t.replace(/[/g,"\u005B");
+ t = t.replace(/\/g,"\u005C");
+ t = t.replace(/]/g,"\u005D");
+ t = t.replace(/^/g,"\u005E");
+ t = t.replace(/_/g,"\u005F");
+ t = t.replace(/`/g,"\u0060");
+ t = t.replace(/a/g,"\u0061");
+ t = t.replace(/b/g,"\u0062");
+ t = t.replace(/c/g,"\u0063");
+ t = t.replace(/d/g,"\u0064");
+ t = t.replace(/e/g,"\u0065");
+ t = t.replace(/f/g,"\u0066");
+ t = t.replace(/g/g,"\u0067");
+ t = t.replace(/h/g,"\u0068");
+ t = t.replace(/i/g,"\u0069");
+ t = t.replace(/j/g,"\u006A");
+ t = t.replace(/k/g,"\u006B");
+ t = t.replace(/l/g,"\u006C");
+ t = t.replace(/m/g,"\u006D");
+ t = t.replace(/n/g,"\u006E");
+ t = t.replace(/o/g,"\u006F");
+ t = t.replace(/p/g,"\u0070");
+ t = t.replace(/q/g,"\u0071");
+ t = t.replace(/r/g,"\u0072");
+ t = t.replace(/s/g,"\u0073");
+ t = t.replace(/t/g,"\u0074");
+ t = t.replace(/u/g,"\u0075");
+ t = t.replace(/v/g,"\u0076");
+ t = t.replace(/w/g,"\u0077");
+ t = t.replace(/x/g,"\u0078");
+ t = t.replace(/y/g,"\u0079");
+ t = t.replace(/z/g,"\u007A");
+ t = t.replace(/{/g,"\u007B");
+ t = t.replace(/|/g,"\u007C");
+ t = t.replace(/}/g,"\u007D");
+ t = t.replace(/~/g,"\u007E");
+ t = t.replace(//g,"\u007F");
+ t = t.replace(//g,"\u0080");
+ t = t.replace(//g,"\u0082");
+ t = t.replace(//g,"\u0083");
+ t = t.replace(//g,"\u0084");
+ t = t.replace(/
/g,"\u0085");
+ t = t.replace(//g,"\u0086");
+ t = t.replace(//g,"\u0087");
+ t = t.replace(//g,"\u0088");
+ t = t.replace(//g,"\u0089");
+ t = t.replace(//g,"\u008A");
+ t = t.replace(//g,"\u008B");
+ t = t.replace(//g,"\u008C");
+ t = t.replace(//g,"\u008D");
+ t = t.replace(//g,"\u008E");
+ t = t.replace(//g,"\u0091");
+ t = t.replace(//g,"\u0092");
+ t = t.replace(//g,"\u0093");
+ t = t.replace(//g,"\u0094");
+ t = t.replace(//g,"\u0095");
+ t = t.replace(//g,"\u0096");
+ t = t.replace(//g,"\u0097");
+ t = t.replace(//g,"\u0098");
+ t = t.replace(//g,"\u0099");
+ t = t.replace(//g,"\u009A");
+ t = t.replace(//g,"\u009B");
+ t = t.replace(//g,"\u009C");
+ t = t.replace(//g,"\u009E");
+ t = t.replace(//g,"\u009F");
+ t = t.replace(/¡/g,"\u00A1");
+ t = t.replace(/¢/g,"\u00A2");
+ t = t.replace(/£/g,"\u00A3");
+ t = t.replace(/¤/g,"\u00A4");
+ t = t.replace(/¥/g,"\u00A5");
+ t = t.replace(/¦/g,"\u00A6");
+ t = t.replace(/§/g,"\u00A7");
+ t = t.replace(/¨/g,"\u00A8");
+ t = t.replace(/©/g,"\u00A9");
+ t = t.replace(/ª/g,"\u00AA");
+ t = t.replace(/«/g,"\u00AB");
+ t = t.replace(/¬/g,"\u00AC");
+ t = t.replace(/®/g,"\u00AE");
+ t = t.replace(/¯/g,"\u00AF");
+ t = t.replace(/°/g,"\u00B0");
+ t = t.replace(/±/g,"\u00B1");
+ t = t.replace(/²/g,"\u00B2");
+ t = t.replace(/³/g,"\u00B3");
+ t = t.replace(/´/g,"\u00B4");
+ t = t.replace(/µ/g,"\u00B5");
+ t = t.replace(/¶/g,"\u00B6");
+ t = t.replace(/·/g,"\u00B7");
+ t = t.replace(/¸/g,"\u00B8");
+ t = t.replace(/¹/g,"\u00B9");
+ t = t.replace(/º/g,"\u00BA");
+ t = t.replace(/»/g,"\u00BB");
+ t = t.replace(/¼/g,"\u00BC");
+ t = t.replace(/½/g,"\u00BD");
+ t = t.replace(/¾/g,"\u00BE");
+ t = t.replace(/¿/g,"\u00BF");
+ t = t.replace(/À/g,"\u00C0");
+ t = t.replace(/Á/g,"\u00C1");
+ t = t.replace(/Â/g,"\u00C2");
+ t = t.replace(/Ã/g,"\u00C3");
+ t = t.replace(/Ä/g,"\u00C4");
+ t = t.replace(/Å/g,"\u00C5");
+ t = t.replace(/Æ/g,"\u00C6");
+ t = t.replace(/Ç/g,"\u00C7");
+ t = t.replace(/È/g,"\u00C8");
+ t = t.replace(/É/g,"\u00C9");
+ t = t.replace(/Ê/g,"\u00CA");
+ t = t.replace(/Ë/g,"\u00CB");
+ t = t.replace(/Ì/g,"\u00CC");
+ t = t.replace(/Í/g,"\u00CD");
+ t = t.replace(/Î/g,"\u00CE");
+ t = t.replace(/Ï/g,"\u00CF");
+ t = t.replace(/Ð/g,"\u00D0");
+ t = t.replace(/Ñ/g,"\u00D1");
+ t = t.replace(/Ò/g,"\u00D2");
+ t = t.replace(/Ó/g,"\u00D3");
+ t = t.replace(/Ô/g,"\u00D4");
+ t = t.replace(/Õ/g,"\u00D5");
+ t = t.replace(/Ö/g,"\u00D6");
+ t = t.replace(/×/g,"\u00D7");
+ t = t.replace(/Ø/g,"\u00D8");
+ t = t.replace(/Ù/g,"\u00D9");
+ t = t.replace(/Ú/g,"\u00DA");
+ t = t.replace(/Û/g,"\u00DB");
+ t = t.replace(/Ü/g,"\u00DC");
+ t = t.replace(/Ý/g,"\u00DD");
+ t = t.replace(/Þ/g,"\u00DE");
+ t = t.replace(/ß/g,"\u00DF");
+ t = t.replace(/à/g,"\u00E0");
+ t = t.replace(/á/g,"\u00E1");
+ t = t.replace(/â/g,"\u00E2");
+ t = t.replace(/ã/g,"\u00E3");
+ t = t.replace(/ä/g,"\u00E4");
+ t = t.replace(/å/g,"\u00E5");
+ t = t.replace(/æ/g,"\u00E6");
+ t = t.replace(/ç/g,"\u00E7");
+ t = t.replace(/è/g,"\u00E8");
+ t = t.replace(/é/g,"\u00E9");
+ t = t.replace(/ê/g,"\u00EA");
+ t = t.replace(/ë/g,"\u00EB");
+ t = t.replace(/ì/g,"\u00EC");
+ t = t.replace(/í/g,"\u00ED");
+ t = t.replace(/î/g,"\u00EE");
+ t = t.replace(/ï/g,"\u00EF");
+ t = t.replace(/ð/g,"\u00F0");
+ t = t.replace(/ñ/g,"\u00F1");
+ t = t.replace(/ò/g,"\u00F2");
+ t = t.replace(/ó/g,"\u00F3");
+ t = t.replace(/ô/g,"\u00F4");
+ t = t.replace(/õ/g,"\u00F5");
+ t = t.replace(/ö/g,"\u00F6");
+ t = t.replace(/÷/g,"\u00F7");
+ t = t.replace(/ø/g,"\u00F8");
+ t = t.replace(/ù/g,"\u00F9");
+ t = t.replace(/ú/g,"\u00FA");
+ t = t.replace(/û/g,"\u00FB");
+ t = t.replace(/ü/g,"\u00FC");
+ t = t.replace(/ý/g,"\u00FD");
+ t = t.replace(/þ/g,"\u00FE");
+ t = t.replace(/ÿ/g,"\u00FF");
+ t = t.replace(/"/g,"\u0022");
+ t = t.replace(/</g,"\u003C");
+ t = t.replace(/>/g,"\u003E");
+ t = t.replace(/€/g,"\u0080");
+ t = t.replace(/‚/g,"\u0082");
+ t = t.replace(/ƒ/g,"\u0083");
+ t = t.replace(/„/g,"\u0084");
+ t = t.replace(/…/g,"\u0085");
+ t = t.replace(/†/g,"\u0086");
+ t = t.replace(/‡/g,"\u0087");
+ t = t.replace(/ˆ/g,"\u0088");
+ t = t.replace(/‰/g,"\u0089");
+ t = t.replace(/Š/g,"\u008A");
+ t = t.replace(/‹/g,"\u008B");
+ t = t.replace(/Œ/g,"\u008C");
+ t = t.replace(/‘/g,"\u0091");
+ t = t.replace(/’/g,"\u0092");
+ t = t.replace(/“/g,"\u0093");
+ t = t.replace(/”/g,"\u0094");
+ t = t.replace(/•/g,"\u0095");
+ t = t.replace(/–/g,"\u0096");
+ t = t.replace(/—/g,"\u0097");
+ t = t.replace(/˜/g,"\u0098");
+ t = t.replace(/™/g,"\u0099");
+ t = t.replace(/š/g,"\u009A");
+ t = t.replace(/›/g,"\u009B");
+ t = t.replace(/œ/g,"\u009C");
+ t = t.replace(/ÿ/g,"\u009F");
+ t = t.replace(/¡/g,"\u00A1");
+ t = t.replace(/¢/g,"\u00A2");
+ t = t.replace(/£/g,"\u00A3");
+ t = t.replace(/¤/g,"\u00A4");
+ t = t.replace(/¥/g,"\u00A5");
+ t = t.replace(/¦/g,"\u00A6");
+ t = t.replace(/§/g,"\u00A7");
+ t = t.replace(/¨/g,"\u00A8");
+ t = t.replace(/©/g,"\u00A9");
+ t = t.replace(/ª/g,"\u00AA");
+ t = t.replace(/«/g,"\u00AB");
+ t = t.replace(/¬/g,"\u00AC");
+ t = t.replace(/®/g,"\u00AE");
+ t = t.replace(/¯/g,"\u00AF");
+ t = t.replace(/°/g,"\u00B0");
+ t = t.replace(/±/g,"\u00B1");
+ t = t.replace(/²/g,"\u00B2");
+ t = t.replace(/³/g,"\u00B3");
+ t = t.replace(/´/g,"\u00B4");
+ t = t.replace(/µ/g,"\u00B5");
+ t = t.replace(/¶/g,"\u00B6");
+ t = t.replace(/·/g,"\u00B7");
+ t = t.replace(/¸/g,"\u00B8");
+ t = t.replace(/¹/g,"\u00B9");
+ t = t.replace(/º/g,"\u00BA");
+ t = t.replace(/»/g,"\u00BB");
+ t = t.replace(/¼/g,"\u00BC");
+ t = t.replace(/½/g,"\u00BD");
+ t = t.replace(/¾/g,"\u00BE");
+ t = t.replace(/¿/g,"\u00BF");
+ t = t.replace(/À/g,"\u00C0");
+ t = t.replace(/Á/g,"\u00C1");
+ t = t.replace(/Â/g,"\u00C2");
+ t = t.replace(/Ã/g,"\u00C3");
+ t = t.replace(/Ä/g,"\u00C4");
+ t = t.replace(/Å/g,"\u00C5");
+ t = t.replace(/Æ/g,"\u00C6");
+ t = t.replace(/Ç/g,"\u00C7");
+ t = t.replace(/È/g,"\u00C8");
+ t = t.replace(/É/g,"\u00C9");
+ t = t.replace(/Ê/g,"\u00CA");
+ t = t.replace(/Ë/g,"\u00CB");
+ t = t.replace(/Ì/g,"\u00CC");
+ t = t.replace(/Í/g,"\u00CD");
+ t = t.replace(/Î/g,"\u00CE");
+ t = t.replace(/Ï/g,"\u00CF");
+ t = t.replace(/Ð/g,"\u00D0");
+ t = t.replace(/Ñ/g,"\u00D1");
+ t = t.replace(/Ò/g,"\u00D2");
+ t = t.replace(/Ó/g,"\u00D3");
+ t = t.replace(/Ô/g,"\u00D4");
+ t = t.replace(/Õ/g,"\u00D5");
+ t = t.replace(/Ö/g,"\u00D6");
+ t = t.replace(/×/g,"\u00D7");
+ t = t.replace(/Ø/g,"\u00D8");
+ t = t.replace(/Ù/g,"\u00D9");
+ t = t.replace(/Ú/g,"\u00DA");
+ t = t.replace(/Û/g,"\u00DB");
+ t = t.replace(/Ü/g,"\u00DC");
+ t = t.replace(/Ý/g,"\u00DD");
+ t = t.replace(/Þ/g,"\u00DE");
+ t = t.replace(/ß/g,"\u00DF");
+ t = t.replace(/à/g,"\u00E0");
+ t = t.replace(/á/g,"\u00E1");
+ t = t.replace(/â/g,"\u00E2");
+ t = t.replace(/ã/g,"\u00E3");
+ t = t.replace(/ä/g,"\u00E4");
+ t = t.replace(/å/g,"\u00E5");
+ t = t.replace(/æ/g,"\u00E6");
+ t = t.replace(/ç/g,"\u00E7");
+ t = t.replace(/è/g,"\u00E8");
+ t = t.replace(/é/g,"\u00E9");
+ t = t.replace(/ê/g,"\u00EA");
+ t = t.replace(/ë/g,"\u00EB");
+ t = t.replace(/ì/g,"\u00EC");
+ t = t.replace(/í/g,"\u00ED");
+ t = t.replace(/î/g,"\u00EE");
+ t = t.replace(/ï/g,"\u00EF");
+ t = t.replace(/ð/g,"\u00F0");
+ t = t.replace(/ñ/g,"\u00F1");
+ t = t.replace(/ò/g,"\u00F2");
+ t = t.replace(/ó/g,"\u00F3");
+ t = t.replace(/ô/g,"\u00F4");
+ t = t.replace(/õ/g,"\u00F5");
+ t = t.replace(/ö/g,"\u00F6");
+ t = t.replace(/÷/g,"\u00F7");
+ t = t.replace(/ø/g,"\u00F8");
+ t = t.replace(/ù/g,"\u00F9");
+ t = t.replace(/ú/g,"\u00FA");
+ t = t.replace(/û/g,"\u00FB");
+ t = t.replace(/ü/g,"\u00FC");
+ t = t.replace(/ý/g,"\u00FD");
+ t = t.replace(/þ/g,"\u00FE");
+ t = t.replace(/ÿ/g,"\u00FF");
+ t = t.replace(/
/g,"
");
+ t = t.replace(/(?!&)&/g, "&");
+ return t;
+};
diff --git a/config.pri b/config.pri
index 097379d..de47a36 100644
--- a/config.pri
+++ b/config.pri
@@ -111,7 +111,8 @@ config_pri_assets {
$$quote($$BASEDIR/assets/icons/star-o.png) \
$$quote($$BASEDIR/assets/icons/star.png) \
$$quote($$BASEDIR/assets/main.qml) \
- $$quote($$BASEDIR/assets/moment.js)
+ $$quote($$BASEDIR/assets/moment.js) \
+ $$quote($$BASEDIR/assets/parser.js)
}
config_pri_source_group1 {
diff --git a/translations/Goober.ts b/translations/Goober.ts
index 2162349..b7b4cf7 100644
--- a/translations/Goober.ts
+++ b/translations/Goober.ts
@@ -30,47 +30,47 @@
PostItem
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+