diff --git a/demos/advanced_demo.html b/demos/advanced_demo.html
index 3f03c76..73232b0 100644
--- a/demos/advanced_demo.html
+++ b/demos/advanced_demo.html
@@ -165,7 +165,7 @@
right_output_el = document.getElementById("right_output"),
right_time_el = document.getElementById("right_time"),
select_mode_el = document.getElementById("select_mode"),
-
+ left_byte_size,
my_lzma = new LZMA("../src/lzma_worker.js");
if (!String.prototype.trim) {
@@ -250,7 +250,8 @@
function update_sizes(compare) {
var compare_result = "",
- left_size = left_text_el.value.length,
+ /// If the left text element contains a JSON byte array, we need to get the lenght of the array.
+ left_size = typeof left_byte_size === "number" ? left_byte_size : left_text_el.value.length,
right_size = convert_formated_hex_to_bytes(right_text_el.value);
if (right_size === false) {
@@ -269,6 +270,7 @@
function clear_left() {
left_text_el.value = "";
+ left_byte_size = undefined;
update_sizes();
}
@@ -284,12 +286,28 @@
return time + " ms";
}
+ function prepare_data(str)
+ {
+ var arr;
+ /// If the string is a JSON array, use that. This allows us to compress a byte array.
+ if (str[0] === "[" && str.slice(-1) === "]") {
+ try {
+ arr = JSON.parse(str);
+ } catch (e) {}
+ }
+ if (arr) {
+ return arr;
+ }
+ return str;
+ }
+
clear_left_button_el.onclick = clear_left;
clear_right_button_el.onclick = clear_right;
compress_button_el.onclick = function () {
- var start_time;
+ var start_time,
+ data_to_compress = prepare_data(left_text_el.value);
right_text_el.value = "";
update_sizes();
@@ -300,7 +318,13 @@
start_time = (new Date).getTime();
right_time_el.innerHTML = "";
- my_lzma.compress(left_text_el.value, select_mode_el.value, function (result) {
+ if (typeof data_to_compress === "string") {
+ left_byte_size = undefined;
+ } else {
+ left_byte_size = data_to_compress.length;
+ }
+
+ my_lzma.compress(data_to_compress, select_mode_el.value, function (result) {
right_time_el.innerHTML = format_time((new Date).getTime() - start_time);
if (result === false) {
@@ -322,6 +346,7 @@
start_time;
left_text_el.value = "";
+ left_byte_size = undefined;
update_sizes();
left_output_el.innerHTML = "Decompressing...0%";
@@ -344,7 +369,12 @@
return;
}
- left_text_el.value = result;
+ if (is_array(result)) {
+ left_text_el.value = JSON.stringify(result);
+ left_byte_size = result.length;
+ } else {
+ left_text_el.value = result;
+ }
update_sizes(true);
}, function progress(percent) {
///NOTE: If "percent" is -1, that means that it is not possible to calculate the percent, so you'll just have to wait.