(function(){ var ns = __namespace( "Components.Vim.State" ); var Recorder = function() { this.__steps = []; this.__i = 0; }; Recorder.prototype.undo = function() { var i = this.__i - 1; if( i == -1 || !this.__steps.length ) return null; return this.__steps[ this.__i = i ]; }; Recorder.prototype.redo = function() { var State = this.__steps[ this.__i ]; if( State ) { this.__i ++; return State; } return null; }; Recorder.prototype.record = function( StateObj ) { this.__steps[ this.__i ] = StateObj; StateObj.id = this.__i ++; }; ns[ NS_EXPORT ]( EX_CLASS, "Recorder", Recorder ); })();