diff --git a/lib/listen/event/queue.rb b/lib/listen/event/queue.rb index 338bc183..dcb5f227 100644 --- a/lib/listen/event/queue.rb +++ b/lib/listen/event/queue.rb @@ -30,20 +30,21 @@ def <<(args) fail "Invalid change: #{change.inspect}" unless change.is_a?(Symbol) fail "Invalid path: #{path.inspect}" unless path.is_a?(String) - dir = _safe_relative_from_cwd(dir) - event_queue.public_send(:<<, [type, change, dir, path, options]) + dir = if @config.relative? + _safe_relative_from_cwd(dir) + else + dir + end + @event_queue << [type, change, dir, path, options] end - delegate empty?: :event_queue - delegate pop: :event_queue - delegate close: :event_queue + delegate empty?: :@event_queue + delegate pop: :@event_queue + delegate close: :@event_queue private - attr_reader :event_queue, :config - def _safe_relative_from_cwd(dir) - return dir unless config.relative? dir.relative_path_from(Pathname.pwd) rescue ArgumentError dir diff --git a/lib/listen/record.rb b/lib/listen/record.rb index 60dfa0d8..d4b740b7 100644 --- a/lib/listen/record.rb +++ b/lib/listen/record.rb @@ -17,8 +17,9 @@ def initialize(directory) end def add_dir(rel_path) - return if [nil, '', '.'].include? rel_path - @tree[rel_path] ||= {} + if ![nil, '', '.'].include?(rel_path) + @tree[rel_path] ||= {} + end end def update_file(rel_path, data) @@ -34,18 +35,18 @@ def unset_path(rel_path) def file_data(rel_path) dirname, basename = Pathname(rel_path).split.map(&:to_s) if [nil, '', '.'].include? dirname - tree[basename] ||= {} - tree[basename].dup + @tree[basename] ||= {} + @tree[basename].dup else - tree[dirname] ||= {} - tree[dirname][basename] ||= {} - tree[dirname][basename].dup + @tree[dirname] ||= {} + @tree[dirname][basename] ||= {} + @tree[dirname][basename].dup end end def dir_entries(rel_path) subtree = if [nil, '', '.'].include? rel_path.to_s - tree + @tree else _sub_tree(rel_path) end @@ -57,7 +58,7 @@ def dir_entries(rel_path) end def _sub_tree(rel_path) - tree.each_with_object({}) do |(path, meta), result| + @tree.each_with_object({}) do |(path, meta), result| next unless path.start_with?(rel_path) if path == rel_path @@ -86,26 +87,26 @@ def _auto_hash Hash.new { |h, k| h[k] = {} } end - attr_reader :tree - def _fast_update_file(dirname, basename, data) - if [nil, '', '.'].include? dirname - tree[basename] = (tree[basename] || {}).merge(data) + if [nil, '', '.'].include?(dirname) + @tree[basename] = (@tree[basename] || {}).merge(data) else - tree[dirname] ||= {} - tree[dirname][basename] = (tree[dirname][basename] || {}).merge(data) + @tree[dirname] ||= {} + @tree[dirname][basename] = (@tree[dirname][basename] || {}).merge(data) end end def _fast_unset_path(dirname, basename) # this may need to be reworked to properly remove # entries from a tree, without adding non-existing dirs to the record - if [nil, '', '.'].include? dirname - return unless tree.key?(basename) - tree.delete(basename) + if [nil, '', '.'].include?(dirname) + if @tree.key?(basename) + @tree.delete(basename) + end else - return unless tree.key?(dirname) - tree[dirname].delete(basename) + if @tree.key?(dirname) + @tree[dirname].delete(basename) + end end end