Class: FFFS::Directory
- Inherits:
-
Hash
- Object
- Hash
- FFFS::Directory
show all
- Includes:
- Node
- Defined in:
- lib/fffs/directory.rb
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
#initialize(name, files = [], parent = nil, filesystem = nil) ⇒ Directory
Returns a new instance of Directory.
31
32
33
34
35
36
37
38
39
40
|
# File 'lib/fffs/directory.rb', line 31
def initialize (name, files=[], parent=nil, filesystem=nil)
@filesystem = filesystem
@parent = parent
@name = name
files.each {|file|
self[file.name] = file
}
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(id, *args, &block) ⇒ Object
60
61
62
|
# File 'lib/fffs/directory.rb', line 60
def method_missing (id, *args, &block)
self[id.to_s]
end
|
Instance Attribute Details
#filesystem ⇒ Object
Returns the value of attribute filesystem.
27
28
29
|
# File 'lib/fffs/directory.rb', line 27
def filesystem
@filesystem
end
|
#name ⇒ Object
Returns the value of attribute name.
29
30
31
|
# File 'lib/fffs/directory.rb', line 29
def name
@name
end
|
#parent ⇒ Object
Returns the value of attribute parent.
27
28
29
|
# File 'lib/fffs/directory.rb', line 27
def parent
@parent
end
|
Instance Method Details
#[]=(name, value) ⇒ Object
66
67
68
69
70
71
|
# File 'lib/fffs/directory.rb', line 66
def []= (name, value)
value.parent = self
value.filesystem = self.filesystem
__set(name, value)
end
|
#__path ⇒ Object
89
|
# File 'lib/fffs/directory.rb', line 89
alias __path path
|
#__set ⇒ Object
64
|
# File 'lib/fffs/directory.rb', line 64
alias __set []=
|
#inspect ⇒ Object
126
127
128
129
130
131
132
133
134
|
# File 'lib/fffs/directory.rb', line 126
def inspect
output = "#{self.path}\n"
self.each_value {|file|
output << "#{file.inspect}\n"
}
output[-1] = ''; output
end
|
#load(path) ⇒ Object
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
|
# File 'lib/fffs/directory.rb', line 105
def load (path)
require 'find'
Find.find(path) {|f|
next unless ::File.file?(f) || ::File.symlink?(f)
tmp = ::File.dirname(f[path.length + 1, f.length]) rescue next
into = self
tmp.split('/').each {|dir|
into = into[dir] || (into << Directory.new(dir))
}
if ::File.file?(f)
into << File.new(::File.basename(f), ::File.read(f))
elsif ::File.symlink?(f)
into << Link.new(::File.basename(f), ::File.readlink(f))
end
}
end
|
#merge!(dir) ⇒ Object
83
84
85
86
87
|
# File 'lib/fffs/directory.rb', line 83
def merge! (dir)
dir.each_value {|file|
self << file
}
end
|
#path ⇒ Object
91
92
93
|
# File 'lib/fffs/directory.rb', line 91
def path
"#{__path}/".sub(%r{/*/}, '/')
end
|
#push(file) ⇒ Object
Also known as:
<<
73
74
75
76
77
78
79
|
# File 'lib/fffs/directory.rb', line 73
def push (file)
if self[file.name].is_a?(Directory) && file.is_a?(Directory)
self[file.name].merge(file)
else
self[file.name] = file
end
end
|
#save(path) ⇒ Object
95
96
97
98
99
100
101
102
103
|
# File 'lib/fffs/directory.rb', line 95
def save (path)
require 'fileutils'
FileUtils.mkpath(path)
each_value {|f|
f.save("#{path}/#{f.name}")
}
end
|
#to_a ⇒ Object
56
57
58
|
# File 'lib/fffs/directory.rb', line 56
def to_a
self.map {|(name, file)| file}
end
|