class ZipContainer::ManagedEntry

ManagedEntry is the superclass of ManagedDirectory and ManagedFile. It should not be used directly but may be subclassed if necessary.

Attributes

name[R]

The name of the ManagedEntry. For the full path name of this entry use full_name.

Public Class Methods

new(name, required) → ManagedEntry click to toggle source

Create a new ManagedEntry with the supplied name. The entry should also be marked as required or not and whether it is hidden for normal operations.

# File lib/zip-container/entries/entry.rb, line 51
def initialize(name, required, hidden)
  @parent = nil
  @name = name
  @required = required
  @hidden = hidden
end

Public Instance Methods

exists? → true or false click to toggle source

Does this ManagedEntry exist in the Container?

# File lib/zip-container/entries/entry.rb, line 88
def exists?
  container.entries.each do |entry|
    test = (entry.ftype == :directory) ? "#{full_name}/" : full_name
    return true if entry.name == test
  end

  false
end
full_name → string click to toggle source

The fully qualified name of this ManagedEntry.

# File lib/zip-container/entries/entry.rb, line 62
def full_name
  @parent.is_a?(ZipContainer::Container) ? @name : "#{@parent.full_name}/#{@name}"
end
hidden? → true or false click to toggle source

Is this ManagedEntry hidden for normal operations?

# File lib/zip-container/entries/entry.rb, line 79
def hidden?
  # An entry is hidden if its parent is hidden.
  @parent.is_a?(ZipContainer::Container) ? @hidden : @hidden || @parent.hidden?
end
required? → true or false click to toggle source

Is this ManagedEntry required to be present according to the specification of its Container?

# File lib/zip-container/entries/entry.rb, line 71
def required?
  @required
end
verify → true or false click to toggle source

Verify this ManagedEntry by checking that it exists if it is required according to its Container specification and validating its contents if necessary.

# File lib/zip-container/entries/entry.rb, line 111
def verify
  begin
    verify!
  rescue
    return false
  end

  true
end

Protected Instance Methods

container → Container click to toggle source

Return the Container that this ManagedEntry resides in.

# File lib/zip-container/entries/entry.rb, line 142
def container
  @parent.is_a?(ZipContainer::Container) ? @parent : @parent.container
end
verify! click to toggle source

Verify this ManagedEntry raising a MalformedContainerError if it fails.

Subclasses should override this method if they require more complex verification to be done.

# File lib/zip-container/entries/entry.rb, line 131
def verify!
  unless !@required || exists?
    raise MalformedContainerError.new("Entry '#{full_name}' is required "           "but missing.")
  end
end