Class: Capsium::Package::Storage

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
sig/capsium/package/storage.rbs,
lib/capsium/package/storage.rb

Overview

Loads and writes storage.json and instantiates its datasets (ARCHITECTURE.md section 5).

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(path) ⇒ Storage

Returns a new instance of Storage.

Parameters:

  • path (String)


14
15
16
17
18
19
20
21
22
23
# File 'lib/capsium/package/storage.rb', line 14

def initialize(path)
  @path = path
  @dir = File.dirname(path)
  @config = if File.exist?(path)
              StorageConfig.from_json(File.read(path))
            else
              StorageConfig.new
            end
  @datasets = load_datasets
end

Instance Attribute Details

#configStorageConfig (readonly)

Returns the value of attribute config.

Returns:



10
11
12
# File 'lib/capsium/package/storage.rb', line 10

def config
  @config
end

#datasetsArray[Dataset] (readonly)

Returns the value of attribute datasets.

Returns:



10
11
12
# File 'lib/capsium/package/storage.rb', line 10

def datasets
  @datasets
end

#pathString (readonly)

Returns the value of attribute path.

Returns:

  • (String)


10
11
12
# File 'lib/capsium/package/storage.rb', line 10

def path
  @path
end

Instance Method Details

#data_setsHash[String, DatasetConfig]

Returns:



25
26
27
# File 'lib/capsium/package/storage.rb', line 25

def data_sets
  @config.data_sets
end

#dataset(name) ⇒ Dataset?

Parameters:

  • name (String)

Returns:



35
36
37
# File 'lib/capsium/package/storage.rb', line 35

def dataset(name)
  @datasets.find { |dataset| dataset.name == name }
end

#dataset_namesArray[String]

Returns:

  • (Array[String])


39
40
41
# File 'lib/capsium/package/storage.rb', line 39

def dataset_names
  data_sets.keys.sort
end

#empty?Boolean

Returns:

  • (Boolean)


43
44
45
# File 'lib/capsium/package/storage.rb', line 43

def empty?
  data_sets.empty?
end

#load_datasetsArray[Dataset]

Returns:



29
30
31
32
33
# File 'lib/capsium/package/storage.rb', line 29

def load_datasets
  data_sets.map do |name, dataset_config|
    dataset_config.to_dataset(name, @dir)
  end
end

#save_to_file(output_path = @path) ⇒ void

This method returns an undefined value.

Parameters:

  • output_path (String) (defaults to: @path)


47
48
49
# File 'lib/capsium/package/storage.rb', line 47

def save_to_file(output_path = @path)
  File.write(output_path, to_json)
end

#to_hashHash[String, untyped]

Returns:

  • (Hash[String, untyped])


25
# File 'sig/capsium/package/storage.rbs', line 25

def to_hash: () -> Hash[String, untyped]

#to_jsonString

Parameters:

  • args (Object)

Returns:

  • (String)


24
# File 'sig/capsium/package/storage.rbs', line 24

def to_json: (*untyped args) -> String