In Files

Parent

Included Modules

Class/Module Index [+]

Quicksearch

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

[Validate]

Generated with the Darkfish Rdoc Generator 2.