Module: MiGA::Result::Source

Included in:
MiGA::Result
Defined in:
lib/miga/result/source.rb

Overview

Helper module including functions to access the source of results

Instance Method Summary collapse

Instance Method Details

#keyObject

Detect the result key assigned to this result



19
20
21
22
23
24
25
26
27
28
# File 'lib/miga/result/source.rb', line 19

def key
  @key ||=
    if relative_dir == 'data/90.stats' && file_path(:metadata_index)
      :project_stats
    else
      MiGA::Result.RESULT_DIRS.find do |k, v|
        "data/#{v}" == relative_dir
      end.first
    end
end

#projectObject

Project containing the result



44
45
46
# File 'lib/miga/result/source.rb', line 44

def project
  @project ||= MiGA::Project.load(project_path)
end

#project_pathObject

Path to the project containing the result. In most cases this should be identical to project.path, but this function is provided for safety, so the path referencing is identical to that of self.path whenever they need to be compared.



53
54
55
# File 'lib/miga/result/source.rb', line 53

def project_path
  path[0..path.rindex('/data/') - 1]
end

#relative_dirObject

Path of the result containing the directory relative to the parent project



32
33
34
# File 'lib/miga/result/source.rb', line 32

def relative_dir
  @relative_dir ||= dir.sub("#{project_path}/", '')
end

#relative_pathObject

Path of the result’s JSON definition relative to the parent project



38
39
40
# File 'lib/miga/result/source.rb', line 38

def relative_path
  @relative_path ||= path.sub("#{project_path}/", '')
end

#sourceObject

Load and return the source (parent object) of a result



8
9
10
11
12
13
14
15
# File 'lib/miga/result/source.rb', line 8

def source
  @source ||=
    if MiGA::Project.RESULT_DIRS[key]
      project
    else
      project.dataset(File.basename(path, '.json'))
    end
end