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/managed_entries.rb, line 52 def managed_directories return @managed_directories if defined?(@managed_directories) dirs = @directories.values @managed_directories = dirs + dirs.map(&:managed_directories).flatten end
Return the list of managed directories.
Source
# File lib/zip-container/managed_entries.rb, line 71 def managed_directory?(entry) managed_entry?(entry, managed_directory_names) end
Is the supplied entry/name a managed directory?
Source
# File lib/zip-container/managed_entries.rb, line 63 def managed_directory_names @managed_directory_names ||= managed_directories.map(&:full_name) end
Return the list of managed directory names.
Source
# File lib/zip-container/managed_entries.rb, line 79 def managed_entries @managed_entries ||= managed_files + managed_directories end
Return the list of managed files and directories.
Source
# File lib/zip-container/managed_entries.rb, line 95 def managed_entry?(entry, list = managed_entry_names) name = Util.entry_name(entry) list.map(&:downcase).include? name.downcase end
Is the supplied entry/name a managed entry?
Source
# File lib/zip-container/managed_entries.rb, line 87 def managed_entry_names @managed_entry_names ||= managed_file_names + managed_directory_names end
Return the list of managed file and directory names.
Source
# File lib/zip-container/managed_entries.rb, line 104 def managed_file?(entry) managed_entry?(entry, managed_file_names) end
Is the supplied entry/name a managed file?
Source
# File lib/zip-container/managed_entries.rb, line 148 def managed_file_names @managed_file_names ||= managed_files.map(&:full_name) end
Return the list of managed file names.
Source
# File lib/zip-container/managed_entries.rb, line 138 def managed_files @managed_files ||= @files.values + @directories.values.map(&:managed_files).flatten end
Return the list of managed files.
Source
# File lib/zip-container/managed_entries.rb, line 157 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
All managed files and directories are checked to make sure that they exist and validate, if required.
Source
# File lib/zip-container/managed_entries.rb, line 176 def verify_managed_entries! messages = verify_managed_entries raise MalformedContainerError, messages unless messages.empty? 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/managed_entries.rb, line 191 def initialize_managed_entries(entries = []) list = [*entries] @directories ||= {} @files ||= {} list.each { |item| register_managed_entry(item) } 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/managed_entries.rb, line 210 def register_managed_entry(entry) unless entry.is_a?(ManagedEntry) raise ArgumentError, 'The supplied entry must be of type ' \ 'ManagedDirectory or ManagedFile or a subclass of either.' end entry.parent = self if entry.is_a?(ManagedFile) @files[entry.name] = entry else @directories[entry.name] = entry end 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.