mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
favor composition over inheritance
This commit is contained in:
parent
37c84ed877
commit
bca7770e6c
1 changed files with 20 additions and 5 deletions
|
@ -43,25 +43,40 @@ module Rails
|
|||
# root["app/controllers"].existent # => ["/rails/app/controllers"]
|
||||
#
|
||||
# Check the <tt>Rails::Paths::Path</tt> documentation for more information.
|
||||
class Root < ::Hash
|
||||
class Root
|
||||
attr_accessor :path
|
||||
|
||||
def initialize(path)
|
||||
raise "Argument should be a String of the physical root path" if path.is_a?(Array)
|
||||
@current = nil
|
||||
@path = path
|
||||
@root = self
|
||||
super()
|
||||
@root = {}
|
||||
end
|
||||
|
||||
def []=(path, value)
|
||||
value = Path.new(self, path, [value].flatten) unless value.is_a?(Path)
|
||||
super(path, value)
|
||||
@root[path] = value
|
||||
end
|
||||
|
||||
def add(path, options={})
|
||||
with = options[:with] || path
|
||||
self[path] = Path.new(self, path, [with].flatten, options)
|
||||
@root[path] = Path.new(self, path, [with].flatten, options)
|
||||
end
|
||||
|
||||
def [](path)
|
||||
@root[path]
|
||||
end
|
||||
|
||||
def values
|
||||
@root.values
|
||||
end
|
||||
|
||||
def keys
|
||||
@root.keys
|
||||
end
|
||||
|
||||
def values_at(*list)
|
||||
@root.values_at(*list)
|
||||
end
|
||||
|
||||
def all_paths
|
||||
|
|
Loading…
Reference in a new issue