Class: PurposeConfig

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

Overview

Purpose config is used to translate the configuration options in the purposes/*.yml files into the serialized versions in the config/settings/*.yml It also handles the registration of new purposes within Sequencescape.

Direct Known Subclasses

Plate, Tube, TubeRack

Defined Under Namespace

Classes: Plate, Tube, TubeRack

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, options, store, api, submission_templates, label_template_config) ⇒ PurposeConfig

Returns a new instance of PurposeConfig.

Parameters:

  • name (String)

    name of the purpose, from the keys from the purposes.yml file

  • options (Hash)

    values under the name key from the purposes.yml file

  • label_template_config (Hash)

    hash version of the label_template_config.yml file



35
36
37
38
39
40
41
42
43
44
45
# File 'lib/purpose_config.rb', line 35

def initialize(name, options, store, api, submission_templates, label_template_config)
  @name = name
  @options = options
  @submission = options.delete(:submission)
  @store = store
  @api = api
  @submission_templates = submission_templates
  @label_templates = label_template_config.fetch('templates')
  @label_template_defaults = label_template_config.fetch('defaults_by_printer_type')
  @template_name = @options.delete(:label_template) || ''
end

Instance Attribute Details

#apiObject (readonly)

Returns the value of attribute api.



11
12
13
# File 'lib/purpose_config.rb', line 11

def api
  @api
end

#nameObject (readonly)

Returns the value of attribute name.



11
12
13
# File 'lib/purpose_config.rb', line 11

def name
  @name
end

#optionsObject (readonly)

Returns the value of attribute options.



11
12
13
# File 'lib/purpose_config.rb', line 11

def options
  @options
end

#storeObject (readonly)

Returns the value of attribute store.



11
12
13
# File 'lib/purpose_config.rb', line 11

def store
  @store
end

Class Method Details

.load(name, options, store, api, submission_templates, label_template_config) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/purpose_config.rb', line 17

def self.load(name, options, store, api, submission_templates, label_template_config)
  case options.fetch(:asset_type)
  when 'plate'
    PurposeConfig::Plate.new(name, options, store, api, submission_templates, label_template_config)
  when 'tube'
    PurposeConfig::Tube.new(name, options, store, api, submission_templates, label_template_config)
  when 'tube_rack'
    PurposeConfig::TubeRack.new(name, options, store, api, submission_templates, label_template_config)
  else
    raise "Unknown purpose type #{options.fetch(:asset_type)} for #{name}"
  end
end

Instance Method Details

#configObject



47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/purpose_config.rb', line 47

def config
  {
    name: name,
    **default_options,
    state_changer_class: default_state_changer,
    submission: submission_options,
    label_class: label_template[:label_class],
    printer_type: label_template[:printer_type],
    pmb_template: label_template[:pmb_template],
    sprint_template: label_template[:sprint_template]
  }.merge(@options)
end

#uuidObject



60
61
62
# File 'lib/purpose_config.rb', line 60

def uuid
  store.fetch(name).uuid
end