# class Listen::Record::Entry

Represents a directory entry (dir or file)

### Attributes

name[R]
relative[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/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/listen/record/entry.rb, line 14
    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/listen/record/entry.rb, line 21
    def meta
      lstat = ::File.lstat(sys_path)
      { mtime: lstat.mtime.to_f, mode: lstat.mode }
    end

real_path() click to toggle source

    # File lib/listen/record/entry.rb, line 39
    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/listen/record/entry.rb, line 30
    def record_dir_key
      ::File.join(*[@relative, @name].compact)
    end

sys_path() click to toggle source

    # File lib/listen/record/entry.rb, line 34
    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/listen/record/entry.rb, line 45
    def _join
      args = [@relative, @name].compact
      args.empty? ? nil : ::File.join(*args)
    end