class TRecs::InMemorySource
Attributes
trecs_backend[R]
Public Instance Methods
add_entry(path) { |io| ... }
click to toggle source
# File lib/trecs/sources/in_memory_source.rb, line 37 def add_entry(path) io = StringIO.new yield io io.rewind content = io.read.to_s path_array = path.split("/") << content result = path_array.reverse.inject do |entry, path| { path => entry } end deep_merge(trecs_backend, result) end
clear()
click to toggle source
# File lib/trecs/sources/in_memory_source.rb, line 33 def clear @trecs_backend.clear end
create_recording()
click to toggle source
# File lib/trecs/sources/in_memory_source.rb, line 28 def create_recording clear trecs_backend[:manifest] = manifest end
read_entry(path)
click to toggle source
# File lib/trecs/sources/in_memory_source.rb, line 50 def read_entry(path) path = path.split("/") path.inject(trecs_backend) do |current_tree, current_entry| break nil if current_tree.nil? current_tree[current_entry] end end
Private Instance Methods
deep_merge(hash1, hash2, &block)
click to toggle source
# File lib/trecs/sources/in_memory_source.rb, line 62 def deep_merge(hash1, hash2, &block) hash2.each_pair do |current_key, other_value| this_value = hash1[current_key] hash1[current_key] = if this_value.is_a?(Hash) && other_value.is_a?(Hash) deep_merge(this_value, other_value, &block) else if block_given? && key?(current_key) block.call(current_key, this_value, other_value) else other_value end end end hash1 end