Sha256: ea4b3248d498ac3952e3e571d981f643425ae3b7b2036991dee315f76e2ee3dc

Contents?: true

Size: 1.11 KB

Versions: 1

Compression:

Stored size: 1.11 KB

Contents

class Knj::Event_filemod
	attr_reader :args
	
	def initialize(args, &block)
		@args = args
		@run = true
		@mutex = Mutex.new
		
		@args[:wait] = 1 if !@args.has_key?(:wait)
		
		@mtimes = {}
		args[:paths].each do |path|
			@mtimes[path] = File.mtime(path)
		end
		
		Knj::Thread.new do
			while @run do
				break if !@args or !@args[:paths] or @args[:paths].empty?
				
				@mutex.synchronize do
				@args[:paths].each do |path|
					changed = false
					
					if @mtimes and !@mtimes.has_key?(path) and @mtimes.is_a?(Hash)
						@mtimes[path] = File.mtime(path)
					end
					
					begin
						newdate = File.mtime(path)
					rescue Errno::ENOENT
						#file does not exist.
						changed = true
					end
					
					if !changed and newdate and @mtimes and newdate > @mtimes[path]
						changed = true
					end
					
					if changed
						block.call(self, path)
						@args[:paths].delete(path) if @args and @args[:break_when_changed]
					end
				end
				
				sleep @args[:wait] if @args and @run
			end
		end
	end
	
	def destroy
		@mtimes = {}
		@run = false
		@args = nil
	end
	
	def add_path(fpath)
    @args[:paths] << fpath
	end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
knjrbfw-0.0.7 lib/knj/event_filemod.rb