class FPM::Package::Docker::Node

@api private

Public Class Methods

new() click to toggle source
Calls superclass method
# File lib/fpm/package/docker.rb, line 105
def initialize
  super(Hash.new{|hsh,key| hsh[key] = Node.new },nil)
end
read(enum) click to toggle source
# File lib/fpm/package/docker.rb, line 200
def self.read(enum)
  fs = Node.new
  enum.each do |ch|
    n = fs
    ch['Path'].split('/').each do |part|
      n = n[part]
    end
    n.kind = ch['Kind']
  end
  return fs
end

Public Instance Methods

[](name) click to toggle source
# File lib/fpm/package/docker.rb, line 109
def [](name)
  children[name]
end
contains_leaves?() click to toggle source
# File lib/fpm/package/docker.rb, line 129
def contains_leaves?
  children.any?{|_,c| c.leaf? }
end
delete(path) click to toggle source
# File lib/fpm/package/docker.rb, line 191
def delete(path)
  _, key, rest = path.split('/',3)
  if rest.nil?
    children.delete(key)
  else
    children[key].delete("/#{rest}")
  end
end
leaf?() click to toggle source
# File lib/fpm/package/docker.rb, line 113
def leaf?
  children.none?
end
leaves(prefix = '/') { |prefix, false| ... } click to toggle source
# File lib/fpm/package/docker.rb, line 117
def leaves(prefix = '/', &block)
  return to_enum(:leaves, prefix) unless block
  if leaf?
    yield prefix, false
  else
    children.each do |name, cld|
      cld.leaves( File.join(prefix,name), &block )
    end
  end
  return self
end
modified_leaves(prefix = '/') { |kind, prefix| ... } click to toggle source
# File lib/fpm/package/docker.rb, line 133
def modified_leaves(prefix = '/', &block)
  return to_enum(:modified_leaves, prefix) unless block
  if leaf?
    if kind != CREATED
      yield kind, prefix
    end
  else
    children.each do |name, cld|
      cld.modified_leaves( File.join(prefix,name), &block)
    end
  end
end
reject!(prefix = '/') { |p| ... } click to toggle source
# File lib/fpm/package/docker.rb, line 179
def reject!(prefix = '/', &block)
  children.reject! do |name, cld|
    p = File.join(prefix,name)
    if yield p
      true
    else
      cld.reject!(p,&block)
      false
    end
  end
end
remove_modified_leaves!(changes_to_remove, prefix = '/') { |kind, join| ... } click to toggle source
# File lib/fpm/package/docker.rb, line 146
def remove_modified_leaves!(changes_to_remove, prefix = '/', &block)
  to_remove = {}
  children.each do |name, cld|
    removed_children = cld.remove_modified_leaves!(changes_to_remove, File.join(prefix,name), &block)
    if cld.leaf? && changes_to_remove.include?(cld.kind)
      to_remove[name] = [cld.kind, removed_children]
    end
  end
  if to_remove.any?
    to_remove.each do |name, (kind, removed_children)|
      children.delete(name)
      if !removed_children
        yield kind, File.join(prefix,name)
      end
    end
    return true
  end
  return false
end
smallest_superset(prefix = '/') { |prefix| ... } click to toggle source
# File lib/fpm/package/docker.rb, line 166
def smallest_superset(prefix = '/', &block)
  return to_enum(:smallest_superset, prefix) unless block
  if leaf?
    return
  elsif contains_leaves?
    yield prefix
  else
    children.each do |name, cld|
      cld.smallest_superset( File.join(prefix,name), &block)
    end
  end
end