module Pakyow::Behavior::Watching

Public Instance Methods

change_callbacks(path) click to toggle source

@api private

# File lib/pakyow/behavior/watching.rb, line 56
def change_callbacks(path)
  @on_change_matchers.each_with_object([]) { |(matcher, blocks), matched_blocks|
    if matcher.match?(path)
      matched_blocks.concat(blocks)
    end
  }
end
on_change(matcher, &block) click to toggle source

Register a callback to be called when a file changes.

# File lib/pakyow/behavior/watching.rb, line 39
def on_change(matcher, &block)
  (@on_change_matchers[matcher] ||= []) << block
end
watch(*paths, &block) click to toggle source

Register one or more path for changes.

# File lib/pakyow/behavior/watching.rb, line 45
def watch(*paths, &block)
  @watched_paths.concat(paths).uniq!

  if block
    paths.each do |path|
      on_change(File.expand_path(path), &block)
    end
  end
end
watch_callback(path, _event) click to toggle source

@api private

# File lib/pakyow/behavior/watching.rb, line 65
def watch_callback(path, _event)
  change_callbacks(path).each do |callback|
    instance_exec(&callback)
  end
end