Sha256: ca79c93bf6588195a13b2879b03485e8d6912b1acad52a7bd3c6ebdde5c07ae4

Contents?: true

Size: 1.99 KB

Versions: 3

Compression:

Stored size: 1.99 KB

Contents

require 'rbbt/util/misc'
require 'rbbt/knowledge_base'

module KnowledgeBaseRESTHelpers
  class << self
    attr_accessor :knowledge_base_dir, :knowledge_bases
  end

  self.knowledge_base_dir     = "var/knowledge_base"

  def prepare_entities_for_json(entities)
    case entities
    when AnnotatedArray
      list_hash(entities)
    when Array
      entities.inject([]){|acc,e| acc << prepare_entities_for_json(e); acc }
    when Hash
      hash = {}
      entities.each do |key,values|
        hash[key] = prepare_entities_for_json(values)
      end
      hash
    when String
      entities
    end
  end

  def get_kb(name)
    @knowledge_bases ||= IndiferentHash.setup({})
    case name
    when :genomics, "genomics"
      @knowledge_bases[name] ||= Genomics.knowledge_base
    else
      @knowledge_bases[name] ||= KnowledgeBase.new File.join(KnowledgeBaseRESTHelpers.knowledge_base_dir, name)
    end
  end

  def get_knowledge_base(name, namespace = nil)
    @knowledge_bases ||= IndiferentHash.setup({})
    @knowledge_bases[name] ||= begin
                                 kb = case 
                                      when [:genomics, "genomics"].include?(name)
                                        Genomics.knowledge_base
                                      when (Misc.path_relative_to(settings.cache_dir, name) and File.exists?(name))
                                        KnowledgeBase.new name
                                      when KnowledgeBase.registry.include?(name)
                                        KnowledgeBase.registry[name]
                                      when Study.studies.include?(name)
                                        Study.setup(name).knowledge_base
                                      else
                                        KnowledgeBase.new File.join(KnowledgeBaseRESTHelpers.knowledge_base_dir, name)
                                      end

                                 namespace ? kb.version(namespace) : kb
                               end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
rbbt-rest-1.2.2 lib/rbbt/rest/knowledge_base/helpers.rb
rbbt-rest-1.2.1 lib/rbbt/rest/knowledge_base/helpers.rb
rbbt-rest-1.2.0 lib/rbbt/rest/knowledge_base/helpers.rb