descendant(path)
click to toggle source
def descendant(path)
recurse(path, false)
end
descendant!(path)
click to toggle source
def descendant!(path)
recurse(path, true)
end
key_segments(key)
click to toggle source
def key_segments(key)
return key if key.is_a?(Array)
FSSM::Pathname.for(key).segments
end
recurse(key, create=false)
click to toggle source
def recurse(key, create=false)
key = key_segments(key)
node = self
until key.empty?
segment = key.shift
node = create ? node.child!(segment) : node.child(segment)
return nil unless node
end
node
end