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) if !data.is_a?(String) raise "set only works with strings (given data: #{data.inspect})" end parent = _get(path, options.include?(:create_dir)) if parent.has_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.has_key?(name) if !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 83 def delete(path) parent = _get(path[0, path.length - 1]) if !parent.has_key?(path[-1]) raise DataNotFoundError.new(path) end if !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 94 def delete_dir(path, *options) parent = _get(path[0, path.length - 1]) if !parent.has_key?(path[-1]) raise DataNotFoundError.new(path) end if !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 113 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 123 def exists_dir?(path) dir = _get(path) if !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 61 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 105 def list(path) dir = _get(path) if !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 69 def set(path, data, *options) if !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 135 def _get(path, create_dir = false) value = @data path.each_with_index do |path_part, index| if !value.has_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