module ZipContainer::ManagedEntries
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.
Public Instance Methods
Source
# File lib/zip-container/entries/managed.rb 48 def managed_directories 49 return @managed_directories if @managed_directories 50 51 dirs = @directories.values 52 @managed_directories = dirs + dirs.map(&:managed_directories).flatten 53 end
Return the list of managed directories.
Source
# File lib/zip-container/entries/managed.rb 67 def managed_directory?(entry) 68 managed_entry?(entry, managed_directory_names) 69 end
Is the supplied entry/name a managed directory?
Source
# File lib/zip-container/entries/managed.rb 59 def managed_directory_names 60 @managed_directory_names ||= managed_directories.map(&:full_name) 61 end
Return the list of managed directory names.
Source
# File lib/zip-container/entries/managed.rb 75 def managed_entries 76 @managed_entries ||= managed_files + managed_directories 77 end
Return the list of managed files and directories.
Source
# File lib/zip-container/entries/managed.rb 91 def managed_entry?(entry, list = managed_entry_names) 92 name = entry_name(entry) 93 list.map(&:downcase).include? name.downcase 94 end
Is the supplied entry/name a managed entry?
Source
# File lib/zip-container/entries/managed.rb 83 def managed_entry_names 84 @managed_entry_names ||= managed_file_names + managed_directory_names 85 end
Return the list of managed file and directory names.
Source
# File lib/zip-container/entries/managed.rb 100 def managed_file?(entry) 101 managed_entry?(entry, managed_file_names) 102 end
Is the supplied entry/name a managed file?
Source
# File lib/zip-container/entries/managed.rb 144 def managed_file_names 145 @managed_file_names ||= managed_files.map(&:full_name) 146 end
Return the list of managed file names.
Source
# File lib/zip-container/entries/managed.rb 134 def managed_files 135 @managed_files ||= 136 @files.values + 137 @directories.values.map(&:managed_files).flatten 138 end
Return the list of managed files.
Source
# File lib/zip-container/entries/managed.rb 153 def verify_managed_entries 154 messages = [] 155 156 @directories.each_value do |dir| 157 messages += dir.verify 158 end 159 160 @files.each_value do |file| 161 messages += file.verify 162 end 163 164 messages 165 end
All managed files and directories are checked to make sure that they exist and validate, if required.
Source
# File lib/zip-container/entries/managed.rb 172 def verify_managed_entries! 173 messages = verify_managed_entries 174 raise MalformedContainerError, messages unless messages.empty? 175 end
All managed files and directories are checked to make sure that they exist and validate, if required.
Protected Instance Methods
Source
# File lib/zip-container/entries/managed.rb 187 def initialize_managed_entries(entries = []) 188 list = [*entries] 189 @directories ||= {} 190 @files ||= {} 191 192 list.each { |item| register_managed_entry(item) } 193 end
Initialize the managed entries and register any that are supplied. A single ManagedFile
or ManagedDirectory
or a list of them can be provided.
Source
# File lib/zip-container/entries/managed.rb 206 def register_managed_entry(entry) 207 unless entry.is_a?(ManagedDirectory) || entry.is_a?(ManagedFile) 208 raise ArgumentError, 'The supplied entry must be of type '\ 209 'ManagedDirectory or ManagedFile or a subclass of either.' 210 end 211 212 entry.parent = self 213 @directories[entry.name] = entry if entry.is_a? ManagedDirectory 214 @files[entry.name] = entry if entry.is_a? ManagedFile 215 end
Register a ManagedFile
or ManagedDirectory
.
A ManagedFile
is used to reserve the name of a file in the container namespace and can describe how to verify the contents of it if required.
A ManagedDirectory
is used to both reserve the name of a directory in the container namespace and act as an interface to the (possibly) managed files within it.