Class: Listen::Record::Entry

Inherits:
Object
  • Object
show all
Defined in:
lib/listen/record/entry.rb

Overview

Represents a directory entry (dir or file)

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(root, relative, name = nil) ⇒ Entry

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



8
9
10
11
12
# File 'lib/listen/record/entry.rb', line 8

def initialize(root, relative, name = nil)
  @root = root
  @relative = relative
  @name = name
end

Instance Attribute Details

#nameObject (readonly)

Returns the value of attribute name.



14
15
16
# File 'lib/listen/record/entry.rb', line 14

def name
  @name
end

#relativeObject (readonly)

Returns the value of attribute relative.



14
15
16
# File 'lib/listen/record/entry.rb', line 14

def relative
  @relative
end

#rootObject (readonly)

Returns the value of attribute root.



14
15
16
# File 'lib/listen/record/entry.rb', line 14

def root
  @root
end

Instance Method Details

#childrenObject



16
17
18
19
20
21
# File 'lib/listen/record/entry.rb', line 16

def children
  child_relative = _join
  (Dir.entries(sys_path) - %w(. ..)).map do |name|
    Entry.new(@root, child_relative, name)
  end
end

#metaObject



23
24
25
26
# File 'lib/listen/record/entry.rb', line 23

def meta
  lstat = ::File.lstat(sys_path)
  { mtime: lstat.mtime.to_f, mode: lstat.mode }
end

#real_pathObject



41
42
43
# File 'lib/listen/record/entry.rb', line 41

def real_path
  @real_path ||= ::File.realpath(sys_path)
end

#record_dir_keyObject

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



32
33
34
# File 'lib/listen/record/entry.rb', line 32

def record_dir_key
  ::File.join(*[@relative, @name].compact)
end

#sys_pathObject



36
37
38
39
# File 'lib/listen/record/entry.rb', line 36

def sys_path
  # Use full path in case someone uses chdir
  ::File.join(*[@root, @relative, @name].compact)
end