Class: BioInterchange::Registry

Inherits:
Object
  • Object
show all
Defined in:
lib/biointerchange/registry.rb

Overview

A registry of Reader and Writer subclasses that also keeps track which Reader/Writer combinations can be used together. The registry makes it possible to implement readers and writers without the need to modify other BioInterchange framework code.

Class Method Summary collapse

Class Method Details

.is_supported?(reader_id, writer_id) ⇒ Boolean

Returns:

  • (Boolean)


25
26
27
# File 'lib/biointerchange/registry.rb', line 25

def self.is_supported?(reader_id, writer_id)
  @@compatible_reader_writer_pairs["#{reader_id} #{writer_id}"] == true
end

.is_supporting_batch_processing?(reader_id, writer_id) ⇒ Boolean

Returns:

  • (Boolean)


29
30
31
# File 'lib/biointerchange/registry.rb', line 29

def self.is_supporting_batch_processing?(reader_id, writer_id)
  @@reader_batch_processors[reader_id] and @@writer_batch_processors[writer_id]
end

.options_help(reader_id) ⇒ Object



49
50
51
# File 'lib/biointerchange/registry.rb', line 49

def self.options_help(reader_id)
  @@reader_help_texts[reader_id].clone.freeze
end

.reader(reader_id) ⇒ Object



33
34
35
# File 'lib/biointerchange/registry.rb', line 33

def self.reader(reader_id)
  @@readers[reader_id]
end

.reader_descriptionsObject



41
42
43
# File 'lib/biointerchange/registry.rb', line 41

def self.reader_descriptions
  @@reader_descriptions.clone.freeze
end

.reader_writer_pairsObject



53
54
55
# File 'lib/biointerchange/registry.rb', line 53

def self.reader_writer_pairs
  @@compatible_reader_writer_pairs.keys.sort.map { |reader_writer_pair| reader_writer_pair.split(/ /, 2) }.freeze
end

.register_reader(reader_id, reader_class, parameters, supports_batch_processing, descriptive_name, options_help) ⇒ Object



9
10
11
12
13
14
# File 'lib/biointerchange/registry.rb', line 9

def self.register_reader(reader_id, reader_class, parameters, supports_batch_processing, descriptive_name, options_help)
  @@readers[reader_id] = [ reader_class ] + parameters
  @@reader_batch_processors[reader_id] = true if supports_batch_processing
  @@reader_descriptions[reader_id] = descriptive_name
  @@reader_help_texts[reader_id] = options_help
end

.register_writer(writer_id, writer_class, compatible_reader_ids, supports_batch_processing, descriptive_name) ⇒ Object



16
17
18
19
20
21
22
23
# File 'lib/biointerchange/registry.rb', line 16

def self.register_writer(writer_id, writer_class, compatible_reader_ids, supports_batch_processing, descriptive_name)
  @@writers[writer_id] = writer_class
  @@writer_batch_processors[writer_id] = true if supports_batch_processing
  @@writer_descriptions[writer_id] = descriptive_name
  compatible_reader_ids.each { |reader_id|
    @@compatible_reader_writer_pairs["#{reader_id} #{writer_id}"] = true
  }
end

.writer(writer_id) ⇒ Object



37
38
39
# File 'lib/biointerchange/registry.rb', line 37

def self.writer(writer_id)
  @@writers[writer_id]
end

.writer_descriptionsObject



45
46
47
# File 'lib/biointerchange/registry.rb', line 45

def self.writer_descriptions
  @@writer_descriptions.clone.freeze
end