class ChefZero::DataStore::MemoryStoreV2
Attributes
data[R]
Public Class Methods
new()
click to toggle source
# File lib/chef_zero/data_store/memory_store_v2.rb, line 26 def initialize clear end
Public Instance Methods
clear()
click to toggle source
# File lib/chef_zero/data_store/memory_store_v2.rb, line 32 def clear @data = {} end
create(path, name, data, *options)
click to toggle source
# File lib/chef_zero/data_store/memory_store_v2.rb, line 48 def create(path, name, data, *options) unless data.is_a?(String) raise "set only works with strings (given data: #{data.inspect})" end parent = _get(path, options.include?(:create_dir)) if parent.key?(name) raise DataAlreadyExistsError.new(path + [name]) end parent[name] = data end
create_dir(path, name, *options)
click to toggle source
# File lib/chef_zero/data_store/memory_store_v2.rb, line 36 def create_dir(path, name, *options) parent = _get(path, options.include?(:recursive)) if parent.key?(name) unless options.include?(:recursive) raise DataAlreadyExistsError.new(path + [name]) end else parent[name] = {} end end
delete(path)
click to toggle source
# File lib/chef_zero/data_store/memory_store_v2.rb, line 86 def delete(path) parent = _get(path[0, path.length - 1]) unless parent.key?(path[-1]) raise DataNotFoundError.new(path) end unless parent[path[-1]].is_a?(String) raise "delete only works with strings: #{path}" end parent.delete(path[-1]) end
delete_dir(path, *options)
click to toggle source
# File lib/chef_zero/data_store/memory_store_v2.rb, line 98 def delete_dir(path, *options) parent = _get(path[0, path.length - 1]) unless parent.key?(path[-1]) raise DataNotFoundError.new(path) end unless parent[path[-1]].is_a?(Hash) raise "delete_dir only works with directories: #{path}" end parent.delete(path[-1]) end
exists?(path, options = {})
click to toggle source
# File lib/chef_zero/data_store/memory_store_v2.rb, line 119 def exists?(path, options = {}) value = _get(path) if value.is_a?(Hash) && !options[:allow_dirs] raise "exists? does not work with directories (#{path} = #{value.class})" end true rescue DataNotFoundError false end
exists_dir?(path)
click to toggle source
# File lib/chef_zero/data_store/memory_store_v2.rb, line 130 def exists_dir?(path) dir = _get(path) unless dir.is_a? Hash raise "exists_dir? only works with directories (#{path} = #{dir.class})" end true rescue DataNotFoundError false end
get(path, request = nil)
click to toggle source
# File lib/chef_zero/data_store/memory_store_v2.rb, line 62 def get(path, request = nil) value = _get(path) if value.is_a?(Hash) raise "get() called on directory #{path.join("/")}" end value end
list(path)
click to toggle source
# File lib/chef_zero/data_store/memory_store_v2.rb, line 110 def list(path) dir = _get(path) unless dir.is_a? Hash raise "list only works with directories (#{path} = #{dir.class})" end dir.keys.sort end
set(path, data, *options)
click to toggle source
# File lib/chef_zero/data_store/memory_store_v2.rb, line 71 def set(path, data, *options) unless data.is_a?(String) raise "set only works with strings: #{path} = #{data.inspect}" end # Get the parent parent = _get(path[0..-2], options.include?(:create_dir)) if !options.include?(:create) && !parent[path[-1]] raise DataNotFoundError.new(path) end parent[path[-1]] = data end
Private Instance Methods
_get(path, create_dir = false)
click to toggle source
# File lib/chef_zero/data_store/memory_store_v2.rb, line 143 def _get(path, create_dir = false) value = @data path.each_with_index do |path_part, index| unless value.key?(path_part) if create_dir value[path_part] = {} else raise DataNotFoundError.new(path[0, index + 1]) end end value = value[path_part] end value end