class Nite::Owl::Action

Attributes

parent[RW]

Public Class Methods

call_all_deferred_actions() click to toggle source
# File lib/nite/owl/niteowl.rb, line 223
def self.call_all_deferred_actions
  unless $deferred_actions.empty?
    $deferred_actions.dup.each do |a,event|
      a.call(event[0],event[1])
    end
  end
end
new() click to toggle source
# File lib/nite/owl/niteowl.rb, line 204
def initialize
  @actions = []
  @parent=nil
  @delay=nil
end

Public Instance Methods

add(a) click to toggle source
# File lib/nite/owl/niteowl.rb, line 240
def add(a)
  @actions << a
  if a.is_a?(Action)
    a.parent = self
  end
  a
end
after(delay) click to toggle source
# File lib/nite/owl/niteowl.rb, line 297
def after(delay)
  add(After.new(delay))
end
also() click to toggle source
# File lib/nite/owl/niteowl.rb, line 237
def also
  root
end
call(name,flags) click to toggle source
# File lib/nite/owl/niteowl.rb, line 259
def call(name,flags)
  $current_action = self
  @actions.each do |n|
    begin
      n.call(name,flags)
    rescue Cancel => c
      undefer()
    rescue Delay => d
      handle_delay(d)
      defer(name,flags)
    rescue Exception => e
      STDERR.puts e.message
      STDERR.puts e.backtrace
    end
  end
end
cancel() click to toggle source
# File lib/nite/owl/niteowl.rb, line 212
def cancel
  raise Cancel.new
end
changes() click to toggle source
# File lib/nite/owl/niteowl.rb, line 312
def changes
  add(HasFlags.new([:create,:delete,:modify,:rename]))
end
contains?(a) click to toggle source
# File lib/nite/owl/niteowl.rb, line 247
def contains?(a)
  @actions.find { |b| a == b or (b.is_a?(Action) and b.contains?(a)) }
end
created() click to toggle source
# File lib/nite/owl/niteowl.rb, line 300
def created
  add(HasFlags.new([:create]))
end
current_action() click to toggle source
# File lib/nite/owl/niteowl.rb, line 209
def current_action
  $current_action
end
defer(name,flags) click to toggle source
# File lib/nite/owl/niteowl.rb, line 215
def defer(name,flags)
  unless $deferred_actions.has_key?(self)
    $deferred_actions[self] = [name,flags] 
  end
end
delay(time) click to toggle source
# File lib/nite/owl/niteowl.rb, line 275
def delay(time)
  if @delay
    if Time.now >= @delay
      @delay = nil
    else
      raise Delay.new(0)
    end
  else
    raise Delay.new(time)
  end
end
deleted() click to toggle source
# File lib/nite/owl/niteowl.rb, line 306
def deleted
  add(HasFlags.new([:delete]))
end
handle_delay(d) click to toggle source
# File lib/nite/owl/niteowl.rb, line 286
def handle_delay(d)
  unless @delay
    @delay = Time.now + d.time
  end
end
if_not(&block) click to toggle source
# File lib/nite/owl/niteowl.rb, line 318
def if_not(&block)
  add(IfNot.new(block))
end
ignore(files) click to toggle source
# File lib/nite/owl/niteowl.rb, line 294
def ignore(files)
  add(NameIsNot.new(files))
end
modified() click to toggle source
# File lib/nite/owl/niteowl.rb, line 303
def modified
  add(HasFlags.new([:modify]))
end
only_if(&block) click to toggle source
# File lib/nite/owl/niteowl.rb, line 315
def only_if(&block)
  add(OnlyIf.new(block))
end
only_once() click to toggle source
# File lib/nite/owl/niteowl.rb, line 291
def only_once
  run { root.parent.remove(self) }
end
remove(a) click to toggle source
# File lib/nite/owl/niteowl.rb, line 250
def remove(a)
  @actions.delete_if { |b| a == b }
  @actions.each { |b| b.is_a?(Action) and b.remove(a) }
  a
end
renamed() click to toggle source
# File lib/nite/owl/niteowl.rb, line 309
def renamed
  add(HasFlags.new([:rename]))
end
root() click to toggle source
# File lib/nite/owl/niteowl.rb, line 230
def root
  r = self
  while r.parent.parent
    r = r.parent
  end
  r
end
run(&block) click to toggle source
# File lib/nite/owl/niteowl.rb, line 255
def run(&block)
  add(block)
  self
end
undefer() click to toggle source
# File lib/nite/owl/niteowl.rb, line 220
def undefer
  $deferred_actions.delete(self)
end