Module: ZipContainer::ManagedEntries

Includes:
Util
Included in:
Container, ManagedDirectory
Defined in:
lib/zip-container/entries/managed.rb

Overview

This module provides support for managed file and directory entries.

Note! If you mix this module in you must call initialize_managed_entries in your constructor to ensure that the internal lists of managed entries are correctly assigned.

Instance Method Summary collapse

Methods included from Util

#entry_name

Instance Method Details

#hidden_directory?(entry) ⇒ Boolean

:call-seq:

hidden_directory?(entry) -> boolean

Is the supplied entry/name a hidden directory?

Returns:

  • (Boolean)


108
109
110
111
# File 'lib/zip-container/entries/managed.rb', line 108

def hidden_directory?(entry)
  name = entry_name(entry)
  managed_directory?(name) ? all_managed_entries[name].hidden? : false
end

#hidden_entry?(entry) ⇒ Boolean

:call-seq:

hidden_entry?(entry) -> boolean

Is the supplied entry/name a hidden?

Returns:

  • (Boolean)


126
127
128
# File 'lib/zip-container/entries/managed.rb', line 126

def hidden_entry?(entry)
  hidden_directory?(entry) || hidden_file?(entry)
end

#hidden_file?(entry) ⇒ Boolean

:call-seq:

hidden_file?(entry) -> boolean

Is the supplied entry/name a hidden file?

Returns:

  • (Boolean)


117
118
119
120
# File 'lib/zip-container/entries/managed.rb', line 117

def hidden_file?(entry)
  name = entry_name(entry)
  managed_file?(name) ? all_managed_entries[name].hidden? : false
end

#managed_directoriesObject

:call-seq:

managed_directories -> Array

Return the list of managed directories.



48
49
50
51
52
53
# File 'lib/zip-container/entries/managed.rb', line 48

def managed_directories
  return @managed_directories if @managed_directories

  dirs = @directories.values
  @managed_directories = dirs + dirs.map(&:managed_directories).flatten
end

#managed_directory?(entry) ⇒ Boolean

:call-seq:

managed_directory?(entry) -> boolean

Is the supplied entry/name a managed directory?

Returns:

  • (Boolean)


67
68
69
# File 'lib/zip-container/entries/managed.rb', line 67

def managed_directory?(entry)
  managed_entry?(entry, managed_directory_names)
end

#managed_directory_namesObject

:call-seq:

managed_directory_names -> Array

Return the list of managed directory names.



59
60
61
# File 'lib/zip-container/entries/managed.rb', line 59

def managed_directory_names
  @managed_directory_names ||= managed_directories.map(&:full_name)
end

#managed_entriesObject

:call-seq:

managed_entries -> Array

Return the list of managed files and directories.



75
76
77
# File 'lib/zip-container/entries/managed.rb', line 75

def managed_entries
  @managed_entries ||= managed_files + managed_directories
end

#managed_entry?(entry, list = managed_entry_names) ⇒ Boolean

:call-seq:

managed_entry?(entry) -> boolean

Is the supplied entry/name a managed entry?

Returns:

  • (Boolean)


91
92
93
94
# File 'lib/zip-container/entries/managed.rb', line 91

def managed_entry?(entry, list = managed_entry_names)
  name = entry_name(entry)
  list.map(&:downcase).include? name.downcase
end

#managed_entry_namesObject

:call-seq:

managed_entry_names -> Array

Return the list of managed file and directory names.



83
84
85
# File 'lib/zip-container/entries/managed.rb', line 83

def managed_entry_names
  @managed_entry_names ||= managed_file_names + managed_directory_names
end

#managed_file?(entry) ⇒ Boolean

:call-seq:

managed_file?(entry) -> boolean

Is the supplied entry/name a managed file?

Returns:

  • (Boolean)


100
101
102
# File 'lib/zip-container/entries/managed.rb', line 100

def managed_file?(entry)
  managed_entry?(entry, managed_file_names)
end

#managed_file_namesObject

:call-seq:

managed_file_names -> Array

Return the list of managed file names.



144
145
146
# File 'lib/zip-container/entries/managed.rb', line 144

def managed_file_names
  @managed_file_names ||= managed_files.map(&:full_name)
end

#managed_filesObject

:call-seq:

managed_files -> Array

Return the list of managed files.



134
135
136
137
138
# File 'lib/zip-container/entries/managed.rb', line 134

def managed_files
  @managed_files ||=
    @files.values +
    @directories.values.map(&:managed_files).flatten
end

#verify_managed_entriesObject

:call-seq:

verify_managed_entries -> Array

All managed files and directories are checked to make sure that they exist and validate, if required.



153
154
155
156
157
158
159
160
161
162
163
164
165
# File 'lib/zip-container/entries/managed.rb', line 153

def verify_managed_entries
  messages = []

  @directories.each_value do |dir|
    messages += dir.verify
  end

  @files.each_value do |file|
    messages += file.verify
  end

  messages
end

#verify_managed_entries!Object

:call-seq:

verify_managed_entries!

All managed files and directories are checked to make sure that they exist and validate, if required.



172
173
174
175
# File 'lib/zip-container/entries/managed.rb', line 172

def verify_managed_entries!
  messages = verify_managed_entries
  raise MalformedContainerError, messages unless messages.empty?
end