Class: Relaxo::Directory
- Inherits:
-
Object
- Object
- Relaxo::Directory
- Defined in:
- lib/relaxo/directory.rb
Instance Method Summary collapse
- #delete(entry) ⇒ Object
- #each(&block) ⇒ Object
- #each_entry(&block) ⇒ Object
- #entries ⇒ Object
- #freeze ⇒ Object
-
#initialize(repository, root_tree, path) ⇒ Directory
constructor
A new instance of Directory.
- #insert(entry) ⇒ Object
Constructor Details
#initialize(repository, root_tree, path) ⇒ Directory
Returns a new instance of Directory.
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/relaxo/directory.rb', line 10 def initialize(repository, root_tree, path) @repository = repository # The root tree, which path is relative to: @root_tree = root_tree # The entry and tree for the directory itself: @entry = nil @tree = nil @path = path @entries = nil @changes = {} end |
Instance Method Details
#delete(entry) ⇒ Object
61 62 63 64 65 66 67 68 |
# File 'lib/relaxo/directory.rb', line 61 def delete(entry) _, _, name = entry[:name].rpartition('/') @changes[name] = nil # Blow away the cache: @entries = nil end |
#each(&block) ⇒ Object
36 37 38 39 40 41 42 43 44 |
# File 'lib/relaxo/directory.rb', line 36 def each(&block) return to_enum(:each) unless block_given? entries.each do |entry| entry[:object] ||= @repository.read(entry[:oid]) yield entry[:name], entry[:object] end end |
#each_entry(&block) ⇒ Object
46 47 48 49 50 |
# File 'lib/relaxo/directory.rb', line 46 def each_entry(&block) return to_enum(:each_entry) unless block_given? entries.each(&block) end |
#entries ⇒ Object
32 33 34 |
# File 'lib/relaxo/directory.rb', line 32 def entries @entries ||= load_entries! end |
#freeze ⇒ Object
26 27 28 29 30 |
# File 'lib/relaxo/directory.rb', line 26 def freeze @changes.freeze super end |
#insert(entry) ⇒ Object
52 53 54 55 56 57 58 59 |
# File 'lib/relaxo/directory.rb', line 52 def insert(entry) _, _, name = entry[:name].rpartition('/') @changes[name] = entry # Blow away the cache: @entries = nil end |