Class: ColorLS::FileInfo

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/colorls/fileinfo.rb

Constant Summary collapse

@@users =

rubocop:disable Style/ClassVars

{}
@@groups =

rubocop:disable Style/ClassVars

{}

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(path, link_info = true) ⇒ FileInfo

Returns a new instance of FileInfo.



15
16
17
18
19
20
21
22
# File 'lib/colorls/fileinfo.rb', line 15

def initialize(path, link_info=true)
  @name = File.basename(path)
  @stats = File.lstat(path)

  @show_name = nil

  handle_symlink(path) if link_info && @stats.symlink?
end

Instance Attribute Details

#nameObject (readonly)

Returns the value of attribute name.



13
14
15
# File 'lib/colorls/fileinfo.rb', line 13

def name
  @name
end

#statsObject (readonly)

Returns the value of attribute stats.



12
13
14
# File 'lib/colorls/fileinfo.rb', line 12

def stats
  @stats
end

Class Method Details

.info(path) ⇒ Object



24
25
26
# File 'lib/colorls/fileinfo.rb', line 24

def self.info(path)
  FileInfo.new(path)
end

Instance Method Details

#dead?Boolean

Returns:

  • (Boolean)


35
36
37
# File 'lib/colorls/fileinfo.rb', line 35

def dead?
  @dead
end

#groupObject



48
49
50
51
52
53
54
55
# File 'lib/colorls/fileinfo.rb', line 48

def group
  return @@groups[@stats.gid] if @@groups.key? @stats.gid

  group = Etc.getgrgid(@stats.gid)
  @@groups[@stats.gid] = group.nil? ? @stats.gid.to_s : group.name
rescue ArgumentError
  @stats.gid.to_s
end

target of a symlink (only available for symlinks)



58
59
60
# File 'lib/colorls/fileinfo.rb', line 58

def link_target
  @target
end

#ownerObject



39
40
41
42
43
44
45
46
# File 'lib/colorls/fileinfo.rb', line 39

def owner
  return @@users[@stats.uid] if @@users.key? @stats.uid

  user = Etc.getpwuid(@stats.uid)
  @@users[@stats.uid] = user.nil? ? @stats.uid.to_s : user.name
rescue ArgumentError
  @stats.uid.to_s
end

#showObject



28
29
30
31
32
33
# File 'lib/colorls/fileinfo.rb', line 28

def show
  return @show_name unless @show_name.nil?

  @show_name = @name.encode(Encoding.find('filesystem'), Encoding.default_external,
                            invalid: :replace, undef: :replace)
end

#to_sObject



62
63
64
# File 'lib/colorls/fileinfo.rb', line 62

def to_s
  name
end