Class: FileD8a

Inherits:
D8a
  • Object
show all
Defined in:
lib/d8a/filed8a.rb

Overview

D8a based on a directory tree.

Instance Attribute Summary collapse

Attributes inherited from D8a

#attrs, #d8aname, #id_attrs

Instance Method Summary collapse

Methods inherited from D8a

#[], #[]=, #copy, #diff, #diff_d8m, #diffreport, #flush, #name, #sync

Constructor Details

#initialize(basedir, name = File.basename(basedir)) ⇒ FileD8a

Returns a new instance of FileD8a.



10
11
12
13
14
15
16
17
18
# File 'lib/d8a/filed8a.rb', line 10

def initialize(basedir, name = File.basename(basedir))
  super(name)

  File.directory?(basedir) || Dir.mkdir(basedir)
  @basedir = basedir

  @attrs.push(:size, :mtime, :mode)
  @id_attrs.push(:size, :mtime)
end

Instance Attribute Details

#basedirObject (readonly)

base directory



7
8
9
# File 'lib/d8a/filed8a.rb', line 7

def basedir
  @basedir
end

Instance Method Details

#delete(d8m) ⇒ Object

Deletes a d8m



68
69
70
# File 'lib/d8a/filed8a.rb', line 68

def delete(d8m)
  File.delete(File.join(@basedir, d8m))
end

#eachObject



48
49
50
51
52
# File 'lib/d8a/filed8a.rb', line 48

def each
  Find.find(@basedir) do |f|
    File.file?(f) && yield(f[(@basedir.length + 1)..-1])
  end
end

#mode(d8m, d8mattrs = nil) ⇒ Object

:mode attribute



38
39
40
# File 'lib/d8a/filed8a.rb', line 38

def mode(d8m, d8mattrs = nil)
  File.stat(File.join(@basedir, d8m)).mode & 0777
end

#mode=(d8m, mode) ⇒ Object



42
43
44
# File 'lib/d8a/filed8a.rb', line 42

def mode=(d8m, mode)
  File.chmod(mode, File.join(@basedir, d8m))
end

#mtime(d8m, d8mattrs = nil) ⇒ Object

:mtime attribute



28
29
30
# File 'lib/d8a/filed8a.rb', line 28

def mtime(d8m, d8mattrs = nil)
  File.mtime(File.join(@basedir, d8m))
end

#mtime=(d8m, mtime) ⇒ Object



32
33
34
# File 'lib/d8a/filed8a.rb', line 32

def mtime=(d8m, mtime)
  File.utime(mtime, mtime, File.join(@basedir, d8m))
end

#read(d8m, &block) ⇒ Object

Reads a d8m



56
57
58
# File 'lib/d8a/filed8a.rb', line 56

def read(d8m, &block)
  File.open(File.join(@basedir, d8m), "r", &block)
end

#size(d8m, d8mattrs = nil) ⇒ Object

:size attribute



22
23
24
# File 'lib/d8a/filed8a.rb', line 22

def size(d8m, d8mattrs = nil)
  File.size(File.join(@basedir, d8m))
end

#write(d8m, &block) ⇒ Object

Writes a d8m



62
63
64
# File 'lib/d8a/filed8a.rb', line 62

def write(d8m, &block)
  File.open(File.join(@basedir, d8m), "w", &block)
end