Class: Zip::EntrySet

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/zip/entry_set.rb

Overview

:nodoc:all

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(an_enumerable = []) ⇒ EntrySet

Returns a new instance of EntrySet.



6
7
8
9
10
11
# File 'lib/zip/entry_set.rb', line 6

def initialize(an_enumerable = [])
  super()
  @entry_set   = {}
  @entry_order = []
  an_enumerable.each { |o| push(o) }
end

Instance Attribute Details

#entry_orderObject

Returns the value of attribute entry_order.



4
5
6
# File 'lib/zip/entry_set.rb', line 4

def entry_order
  @entry_order
end

#entry_setObject

Returns the value of attribute entry_set.



4
5
6
# File 'lib/zip/entry_set.rb', line 4

def entry_set
  @entry_set
end

Instance Method Details

#<<(entry) ⇒ Object Also known as: push



21
22
23
24
25
# File 'lib/zip/entry_set.rb', line 21

def <<(entry)
  @entry_order.delete(to_key(entry))
  @entry_order << to_key(entry)
  @entry_set[to_key(entry)] = entry
end

#==(other) ⇒ Object



58
59
60
61
# File 'lib/zip/entry_set.rb', line 58

def ==(other)
  return false unless other.kind_of?(EntrySet)
  @entry_set == other.entry_set && @entry_order == other.entry_order
end

#delete(entry) ⇒ Object



35
36
37
38
39
40
41
# File 'lib/zip/entry_set.rb', line 35

def delete(entry)
  if @entry_order.delete(to_key(entry)) && @entry_set.delete(to_key(entry))
    entry
  else
    nil
  end
end

#dupObject

deep clone



54
55
56
# File 'lib/zip/entry_set.rb', line 54

def dup
  EntrySet.new(@entry_order.map { |key| @entry_set[key].dup })
end

#each(&block) ⇒ Object



43
44
45
46
47
# File 'lib/zip/entry_set.rb', line 43

def each(&block)
  @entry_order.each do |key|
    block.call @entry_set[key]
  end
end

#entriesObject



49
50
51
# File 'lib/zip/entry_set.rb', line 49

def entries
  @entry_order.map { |key| @entry_set[key] }
end

#find_entry(entry) ⇒ Object



17
18
19
# File 'lib/zip/entry_set.rb', line 17

def find_entry(entry)
  @entry_set[to_key(entry)]
end

#glob(pattern, flags = ::File::FNM_PATHNAME|::File::FNM_DOTMATCH) ⇒ Object



67
68
69
70
71
72
73
# File 'lib/zip/entry_set.rb', line 67

def glob(pattern, flags = ::File::FNM_PATHNAME|::File::FNM_DOTMATCH)
  entries.map do |entry|
    next nil unless ::File.fnmatch(pattern, entry.name.chomp('/'), flags)
    yield(entry) if block_given?
    entry
  end.compact
end

#include?(entry) ⇒ Boolean

Returns:

  • (Boolean)


13
14
15
# File 'lib/zip/entry_set.rb', line 13

def include?(entry)
  @entry_set.include?(to_key(entry))
end

#parent(entry) ⇒ Object



63
64
65
# File 'lib/zip/entry_set.rb', line 63

def parent(entry)
  @entry_set[to_key(entry.parent_as_string)]
end

#sizeObject Also known as: length



29
30
31
# File 'lib/zip/entry_set.rb', line 29

def size
  @entry_set.size
end