From 9d889b75eaf7dc379277f44795644dabfbebe78f Mon Sep 17 00:00:00 2001 From: rswindell <> Date: Sat, 30 Dec 2017 03:12:25 +0000 Subject: [PATCH] New methods: compress_preview(), encode_preview(), decode_preview(), and draw_preview(). This file is now dependent on lz-string.js (for compressing preview data) --- exec/load/sbbslist_lib.js | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/exec/load/sbbslist_lib.js b/exec/load/sbbslist_lib.js index b056a75c27..ae1cbf52d3 100644 --- a/exec/load/sbbslist_lib.js +++ b/exec/load/sbbslist_lib.js @@ -3,6 +3,8 @@ // Synchronet BBS List (SBL) v4 Library load("synchronet-json.js"); // For compatibility with older verisons of Synchronet/JavaScript-C without the JSON object +load("graphic.js"); +load("lz-string.js"); var list_fname = system.data_dir + 'sbbslist.json'; @@ -577,6 +579,35 @@ function syncterm_list(list, dir) return f.name; } +const base64_max_line_len = 72; + +function compress_preview(preview) +{ + var compressed = LZString.compressToBase64(base64_decode(preview.join(""))); + return ["!LZ"].concat(compressed.match(new RegExp('([\x00-\xff]{0,' + base64_max_line_len + '})', 'g'))); +} + +function encode_preview(ansi_capture) +{ + var graphic = new Graphic(); + graphic.ANSI = ansi_capture.join("\r\n"); + return compress_preview(graphic.base64_encode()); +} + +function decode_preview(preview) +{ + if(preview[0] == "!LZ") + return LZString.decompressFromBase64(preview.slice(1).join("")); + else + return base64_decode(preview.join("")); +} + +function draw_preview(bbs) +{ + var graphic = new Graphic(); + graphic.BIN = decode_preview(bbs.preview); + graphic.draw(); +} /* Leave as last line for convenient load() usage: */ this; -- GitLab