class Driskell::Listen::Record::Entry

Represents a directory entry (dir or file)

Attributes

name[R]
root[R]

Public Class Methods

new(root, relative, name = nil) click to toggle source

file: “/home/me/watched_dir”, “app/models”, “foo.rb” dir, “/home/me/watched_dir”, “.”

# File lib/driskell-listen/record/entry.rb, line 8
def initialize(root, relative, name = nil)
  @root, @relative, @name = root, relative, name
end

Public Instance Methods

children() click to toggle source
# File lib/driskell-listen/record/entry.rb, line 19
def children
  child_relative = _join
  (Dir.entries(sys_path) - %w(. ..)).map do |name|
    Entry.new(@root, child_relative, name)
  end
end
meta() click to toggle source
# File lib/driskell-listen/record/entry.rb, line 26
def meta
  lstat = ::File.lstat(sys_path)
  { mtime: lstat.mtime.to_f, mode: lstat.mode }
end
real_path() click to toggle source
# File lib/driskell-listen/record/entry.rb, line 44
def real_path
  @real_path ||= ::File.realpath(sys_path)
end
record_dir_key() click to toggle source

record hash is e.g. if @record[“project/app/models”] if @record[“project/app”] record_dir_key is “project/app/models”

# File lib/driskell-listen/record/entry.rb, line 35
def record_dir_key
  ::File.join(*[@relative, @name].compact)
end
relative() click to toggle source
# File lib/driskell-listen/record/entry.rb, line 14
def relative
  return '.' if @relative.nil?
  @relative
end
sys_path() click to toggle source
# File lib/driskell-listen/record/entry.rb, line 39
def sys_path
  # Use full path in case someone uses chdir
  ::File.join(*[@root, @relative, @name].compact)
end

Private Instance Methods

_join() click to toggle source
# File lib/driskell-listen/record/entry.rb, line 50
def _join
  args = [@relative, @name].compact
  args.empty? ? nil : ::File.join(*args)
end