Class: Autoselect::AssertedEnvironment::Levels::Envo

Inherits:
Level
  • Object
show all
Defined in:
lib/autoselect/asserted_environment/levels/envo.rb

Overview

External level: searches the Environment Ontology (ENVO) via Vendor::Envo (identical mechanism to AnatomicalPart's use of Hookkaido, but hardcoded to the envo ontology - see Vendor::Envo). Results are pseudo-records (OpenStruct, id: nil) - see Autoselect::AssertedEnvironment::Autoselect#response_values for how selecting one is turned into a new AssertedEnvironment.

Constant Summary

Constants inherited from Level

Level::DEFAULT_FUSE_MS, Level::EXTERNAL_FUSE_MS, Level::MINIMUM_RESULTS

Instance Method Summary collapse

Methods inherited from Level

#fuse_ms, #metadata, #minimum_results, #model_key, #record_info_html

Instance Method Details

#call(term:, operator: nil, project_id: nil, user_id: nil, **_kwargs) ⇒ Array<OpenStruct>

Returns pseudo-records with uri/uri_label set from the ENVO search result.

Parameters:

  • term (String)

Returns:

  • (Array<OpenStruct>)

    pseudo-records with uri/uri_label set from the ENVO search result



32
33
34
35
36
37
38
# File 'lib/autoselect/asserted_environment/levels/envo.rb', line 32

def call(term:, operator: nil, project_id: nil, user_id: nil, **_kwargs)
  return [] if term.blank?

  ::Vendor::Envo.search(term)[:results].map do |r|
    OpenStruct.new(id: nil, uri: r[:iri], uri_label: r[:label], description: r[:description])
  end
end

#descriptionObject



21
22
23
# File 'lib/autoselect/asserted_environment/levels/envo.rb', line 21

def description
  'Search the Environment Ontology (ENVO) for matching terms'
end

#external?Boolean

Returns:

  • (Boolean)


25
26
27
# File 'lib/autoselect/asserted_environment/levels/envo.rb', line 25

def external?
  true
end

#keyObject



13
14
15
# File 'lib/autoselect/asserted_environment/levels/envo.rb', line 13

def key
  :envo
end

#labelObject



17
18
19
# File 'lib/autoselect/asserted_environment/levels/envo.rb', line 17

def label
  'ENVO'
end

#record_info(record) ⇒ Object



50
51
52
# File 'lib/autoselect/asserted_environment/levels/envo.rb', line 50

def record_info(record)
  [::Vendor::Envo.local_id(record.uri)]
end

#record_label(record) ⇒ Object

Pseudo-records, so render directly rather than via the label_for_/ _autoselect_tag helper delegation (see Autoselect::Level docs).



42
43
44
# File 'lib/autoselect/asserted_environment/levels/envo.rb', line 42

def record_label(record)
  record.uri_label.to_s
end

#record_label_html(record, term = nil) ⇒ Object



46
47
48
# File 'lib/autoselect/asserted_environment/levels/envo.rb', line 46

def record_label_html(record, term = nil)
  record.description.present? ? "#{record.uri_label}: #{record.description}" : record.uri_label.to_s
end