class Umwelt::Abstract::File::Store

Public Class Methods

new(path: '.umwelt') click to toggle source
# File lib/umwelt/abstract/file/store.rb, line 12
def initialize(path: '.umwelt')
  @path = path
  @written_paths = {}
end

Private Instance Methods

destruct(obj) click to toggle source
# File lib/umwelt/abstract/file/store.rb, line 29
def destruct(obj)
  obj.is_a?(Struct) ? destruct_members(obj.to_h) : obj
end
destruct_members(hash) click to toggle source
# File lib/umwelt/abstract/file/store.rb, line 33
def destruct_members(hash)
  hash.transform_values do |value|
    if value.is_a?(Array)
      value.map { |member| destruct(member) }
    elsif value.is_a? Time
      value.to_s
    else
      destruct(value)
    end
  end
end
serialize(struct) click to toggle source
# File lib/umwelt/abstract/file/store.rb, line 25
def serialize(struct)
  JSON.pretty_generate struct
end
umwelt_root_path() click to toggle source
# File lib/umwelt/abstract/file/store.rb, line 45
def umwelt_root_path
  Pathname.pwd / @path
end
write(path, struct) click to toggle source
# File lib/umwelt/abstract/file/store.rb, line 19
def write(path, struct)
  path.dirname.mkpath

  path.write serialize destruct struct
end