Class: Nite::Owl::Action
- Inherits:
-
Object
show all
- Defined in:
- lib/nite/owl/niteowl.rb
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize ⇒ Action
Returns a new instance of Action.
204
205
206
207
208
|
# File 'lib/nite/owl/niteowl.rb', line 204
def initialize
@actions = []
@parent=nil
@delay=nil
end
|
Instance Attribute Details
#parent ⇒ Object
Returns the value of attribute parent.
203
204
205
|
# File 'lib/nite/owl/niteowl.rb', line 203
def parent
@parent
end
|
Class Method Details
.call_all_deferred_actions ⇒ Object
223
224
225
226
227
228
229
|
# 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
|
Instance Method Details
#add(a) ⇒ Object
240
241
242
243
244
245
246
|
# 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) ⇒ Object
297
298
299
|
# File 'lib/nite/owl/niteowl.rb', line 297
def after(delay)
add(After.new(delay))
end
|
#also ⇒ Object
237
238
239
|
# File 'lib/nite/owl/niteowl.rb', line 237
def also
root
end
|
#call(name, flags) ⇒ Object
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
|
# 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 ⇒ Object
212
213
214
|
# File 'lib/nite/owl/niteowl.rb', line 212
def cancel
raise Cancel.new
end
|
#changes ⇒ Object
312
313
314
|
# File 'lib/nite/owl/niteowl.rb', line 312
def changes
add(HasFlags.new([:create,:delete,:modify,:rename]))
end
|
#contains?(a) ⇒ Boolean
247
248
249
|
# 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 ⇒ Object
300
301
302
|
# File 'lib/nite/owl/niteowl.rb', line 300
def created
add(HasFlags.new([:create]))
end
|
#current_action ⇒ Object
209
210
211
|
# File 'lib/nite/owl/niteowl.rb', line 209
def current_action
$current_action
end
|
#defer(name, flags) ⇒ Object
215
216
217
218
219
|
# 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) ⇒ Object
275
276
277
278
279
280
281
282
283
284
285
|
# 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 ⇒ Object
306
307
308
|
# File 'lib/nite/owl/niteowl.rb', line 306
def deleted
add(HasFlags.new([:delete]))
end
|
#handle_delay(d) ⇒ Object
286
287
288
289
290
|
# File 'lib/nite/owl/niteowl.rb', line 286
def handle_delay(d)
unless @delay
@delay = Time.now + d.time
end
end
|
#if_not(&block) ⇒ Object
318
319
320
|
# File 'lib/nite/owl/niteowl.rb', line 318
def if_not(&block)
add(IfNot.new(block))
end
|
#ignore(files) ⇒ Object
294
295
296
|
# File 'lib/nite/owl/niteowl.rb', line 294
def ignore(files)
add(NameIsNot.new(files))
end
|
#modified ⇒ Object
303
304
305
|
# File 'lib/nite/owl/niteowl.rb', line 303
def modified
add(HasFlags.new([:modify]))
end
|
#only_if(&block) ⇒ Object
315
316
317
|
# File 'lib/nite/owl/niteowl.rb', line 315
def only_if(&block)
add(OnlyIf.new(block))
end
|
#only_once ⇒ Object
291
292
293
|
# File 'lib/nite/owl/niteowl.rb', line 291
def only_once
run { root.parent.remove(self) }
end
|
#remove(a) ⇒ Object
250
251
252
253
254
|
# 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 ⇒ Object
309
310
311
|
# File 'lib/nite/owl/niteowl.rb', line 309
def renamed
add(HasFlags.new([:rename]))
end
|
#root ⇒ Object
230
231
232
233
234
235
236
|
# File 'lib/nite/owl/niteowl.rb', line 230
def root
r = self
while r.parent.parent
r = r.parent
end
r
end
|
#run(&block) ⇒ Object
255
256
257
258
|
# File 'lib/nite/owl/niteowl.rb', line 255
def run(&block)
add(block)
self
end
|
#undefer ⇒ Object
220
221
222
|
# File 'lib/nite/owl/niteowl.rb', line 220
def undefer
$deferred_actions.delete(self)
end
|