class Redwood::UndoManager
Implements a single undo list for the Sup instance
The basic idea is to keep a list of lambdas to undo things. When an action is called (such as 'archive'), a lambda is registered with UndoManager that will undo the archival action
Public Class Methods
new()
click to toggle source
# File lib/sup/undo.rb, line 13 def initialize @@actionlist = [] end
Public Instance Methods
clear()
click to toggle source
# File lib/sup/undo.rb, line 34 def clear @@actionlist = [] end
register(desc, *actions, &b)
click to toggle source
# File lib/sup/undo.rb, line 17 def register desc, *actions, &b actions = [*actions.flatten] actions << b if b raise ArgumentError, "need at least one action" unless actions.length > 0 @@actionlist.push :desc => desc, :actions => actions end
undo()
click to toggle source
# File lib/sup/undo.rb, line 24 def undo unless @@actionlist.empty? actionset = @@actionlist.pop actionset[:actions].each { |action| action.call } BufferManager.flash "undid #{actionset[:desc]}" else BufferManager.flash "nothing more to undo!" end end