Lebab can fix your legacy wick editor fork!

Ever heard of babel? Lebab is like babel, but inverse!

It takes ugly code like this:

/* Wick - (c) 2017 Zach Rispoli, Luca Damasco, and Josh Rispoli */

/*  This file is part of Wick. 
    
    Wick 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.

    Wick 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 Wick.  If not, see <http://www.gnu.org/licenses/>. */

var tweenValueNames = ["x","y","scaleX","scaleY","rotation","opacity"];

var WickTween = function() {
    this.x = 0;
    this.y = 0; 
    this.z = 0; 
    this.scaleX = 1;
    this.scaleY = 1;
    this.rotation = 0;
    this.opacity = 1;

    this.playheadPosition = 0;
    this.rotations = 0;

    this.uuid = random.uuid4();

    this.tweenType = 'Linear';
    this.tweenDir = 'None';
}

WickTween.fromWickObjectState = function (wickObject) {
	var tween = new WickTween();

	tweenValueNames.forEach(function (name) {
		tween[name] = wickObject[name];
	});

	return tween;
}

WickTween.prototype.copy = function () {
    var copy = new WickTween();

    copy.x = this.x;
    copy.y = this.y; 
    copy.z = this.z; 
    copy.scaleX = this.scaleX;
    copy.scaleY = this.scaleY;
    copy.rotation = this.rotation;
    copy.opacity = this.opacity;

    copy.playheadPosition = this.playheadPosition;
    copy.rotations = this.rotations;

    copy.tweenType = this.tweenType;
    copy.tweenDir = this.tweenDir;

    return copy;
}

WickTween.prototype.updateFromWickObjectState = function (wickObject) {
    var self = this;
    
    tweenValueNames.forEach(function (name) {
        self[name] = wickObject[name];
    });
}

WickTween.prototype.applyTweenToWickObject = function(wickObject) {
	var that = this;

	tweenValueNames.forEach(function (name) {
		wickObject[name] = that[name];
	});
};

WickTween.interpolateTweens = function (tweenA, tweenB, t) {
	var interpTween = new WickTween();

	var tweenFunc = (tweenA.tweenType === "Linear") ? (TWEEN.Easing.Linear.None) : (TWEEN.Easing[tweenA.tweenType][tweenA.tweenDir]);
	tweenValueNames.forEach(function (name) {
		var tt = tweenFunc(t);
        var valA = tweenA[name];
        var valB = tweenB[name];
        if(name === 'rotation') {
            while(valA < -180) valA += 360;
            while(valB < -180) valB += 360;
            while(valA > 180) valA -= 360;
            while(valB > 180) valB -= 360;
            valB += tweenA.rotations * 360;
        }
		interpTween[name] = lerp(valA, valB, tt);
	});

	return interpTween;
}

And turns it into this!

/* Wick - (c) 2017 Zach Rispoli, Luca Damasco, and Josh Rispoli */

/*  This file is part of Wick. 
    
    Wick 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.

    Wick 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 Wick.  If not, see <http://www.gnu.org/licenses/>. */

const tweenValueNames = ["x","y","scaleX","scaleY","rotation","opacity"];

class WickTween {
    constructor() {
        this.x = 0;
        this.y = 0; 
        this.z = 0; 
        this.scaleX = 1;
        this.scaleY = 1;
        this.rotation = 0;
        this.opacity = 1;

        this.playheadPosition = 0;
        this.rotations = 0;

        this.uuid = random.uuid4();

        this.tweenType = 'Linear';
        this.tweenDir = 'None';
    }

    static fromWickObjectState(wickObject) {
        const tween = new WickTween();

        tweenValueNames.forEach(name => {
            tween[name] = wickObject[name];
        });

        return tween;
    }

    copy() {
        const copy = new WickTween();

        copy.x = this.x;
        copy.y = this.y; 
        copy.z = this.z; 
        copy.scaleX = this.scaleX;
        copy.scaleY = this.scaleY;
        copy.rotation = this.rotation;
        copy.opacity = this.opacity;

        copy.playheadPosition = this.playheadPosition;
        copy.rotations = this.rotations;

        copy.tweenType = this.tweenType;
        copy.tweenDir = this.tweenDir;

        return copy;
    }

    updateFromWickObjectState(wickObject) {
        const self = this;
        
        tweenValueNames.forEach(name => {
            self[name] = wickObject[name];
        });
    }

    applyTweenToWickObject(wickObject) {
        const that = this;

        tweenValueNames.forEach(name => {
            wickObject[name] = that[name];
        });
    }

    static interpolateTweens(tweenA, tweenB, t) {
        const interpTween = new WickTween();

        const tweenFunc = (tweenA.tweenType === "Linear") ? (TWEEN.Easing.Linear.None) : (TWEEN.Easing[tweenA.tweenType][tweenA.tweenDir]);
        tweenValueNames.forEach(name => {
            const tt = tweenFunc(t);
            let valA = tweenA[name];
            let valB = tweenB[name];
            if(name === 'rotation') {
                while(valA < -180) valA += 360;
                while(valB < -180) valB += 360;
                while(valA > 180) valA -= 360;
                while(valB > 180) valB -= 360;
                valB += tweenA.rotations * 360;
            }
            interpTween[name] = lerp(valA, valB, tt);
        });

        return interpTween;
    }
}

i do not understand ay of this.

Why are you here? This some post i made about a tool i found to make my life easier making web-animate