Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Decompress an LZW-encoded string
- var lzw_decode = function lzw_decode(s,log) {
- if(log !== false){log = true}
- var dict = {};
- var data = (s + "").split("");
- var code = data[0].charCodeAt(0);
- var ocode=code;
- data.splice(0,1);
- var currChar = data[0];
- var oldPhrase = currChar;
- var out = [currChar];
- var phrase;
- load = {now:0,max:data.length,before:0,character:'#'}
- process.stdout.clearLine()
- process.stdout.cursorTo(0)
- if(log){process.stdout.write('decompressing...\n')}
- for (var i=1; i<data.length; i++) {
- load.now = Math.round(100*(i/load.max))
- if(load.before !== load.now && log){
- process.stdout.clearLine()
- process.stdout.cursorTo(0)
- process.stdout.write(load.now+'%')
- process.stdout.cursorTo(5)
- process.stdout.write((load.character).repeat(Math.round(load.now/4)))
- load.before = load.now
- }
- var currCode = data[i].charCodeAt(0);
- if (currCode < ocode) {
- phrase = data[i];
- }
- else {
- phrase = dict[currCode] ? dict[currCode] : (oldPhrase + currChar);
- }
- out.push(phrase);
- currChar = phrase.charAt(0);
- dict[code] = oldPhrase + currChar;
- code++;
- oldPhrase = phrase;
- }
- process.stdout.clearLine()
- process.stdout.cursorTo(0)
- return out.join("");
- }
Advertisement
Add Comment
Please, Sign In to add comment