Module: Unitsml::Configuration

Defined in:
lib/unitsml/configuration.rb

Constant Summary collapse

CONTEXT_ID =
:unitsml_ruby

Class Method Summary collapse

Class Method Details

.build_contextObject



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

def build_context
  ::Unitsdb::Config.context # ensure unitsdb context exists

  substitutions = registered_models.each_value.map do |klass|
    { from_type: klass.superclass, to_type: klass }
  end

  ::Unitsdb::Config.populate_context(
    id: context_id,
    fallback_to: [::Unitsdb::Config.context_id],
    substitutions: substitutions,
  )
end

.context(force_populate: false) ⇒ Object



15
16
17
18
19
20
# File 'lib/unitsml/configuration.rb', line 15

def context(force_populate: false)
  existing = ::Unitsdb::Config.find_context(context_id)
  return existing if existing && !force_populate

  build_context
end

.context_idObject



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

def context_id
  CONTEXT_ID
end

.register_model(klass, id:) ⇒ Object



22
23
24
25
26
27
28
# File 'lib/unitsml/configuration.rb', line 22

def register_model(klass, id:)
  unless unitsdb_model_subclass?(klass)
    raise Unitsml::Errors::InvalidModelError, klass
  end

  registered_models[id.to_sym] = klass
end

.registered_modelsObject



30
31
32
# File 'lib/unitsml/configuration.rb', line 30

def registered_models
  @registered_models ||= {}
end

.unitsdb_model_subclass?(klass) ⇒ Boolean

Returns:

  • (Boolean)


48
49
50
51
52
53
54
55
# File 'lib/unitsml/configuration.rb', line 48

def unitsdb_model_subclass?(klass)
  return false unless klass.is_a?(Class)

  parent = klass.superclass
  return false if parent.nil? || parent == Object

  parent.name&.start_with?("Unitsdb::")
end