Class: Unitsml::PrefixAdapter

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

Overview

Value object that adapts the various "prefix-shaped" inputs flowing through Unitsml::Utility to a single, type-explicit interface.

Dispatch is by is_a? / case/when, so type errors surface at the boundary instead of silently falling through.

Recognized inputs:

- `Unitsml::Prefix`              — already adapted, has full API
- `::Unitsdb::Prefix`            — upstream record, has `symbols`
- `Unitsml::Unitsdb::PrefixReference` — UnitsML reference, has `symbolid`
- `::Unitsdb::PrefixReference`   — bare id/type, needs lookup
- `String`                       — prefix name, looked up
- `nil`                          — null adapter

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(raw) ⇒ PrefixAdapter

Returns a new instance of PrefixAdapter.



20
21
22
# File 'lib/unitsml/prefix_adapter.rb', line 20

def initialize(raw)
  @raw = raw
end

Instance Attribute Details

#rawObject (readonly)

Returns the value of attribute raw.



18
19
20
# File 'lib/unitsml/prefix_adapter.rb', line 18

def raw
  @raw
end

Class Method Details

.from_name(name) ⇒ Object



41
42
43
44
45
# File 'lib/unitsml/prefix_adapter.rb', line 41

def self.from_name(name)
  return new(nil) unless Unitsml::Unitsdb.prefixes_array.include?(name)

  new(Unitsml::Prefix.new(name))
end

.wrap(prefix) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/unitsml/prefix_adapter.rb', line 24

def self.wrap(prefix)
  return new(nil) if prefix.nil?
  return prefix if prefix.is_a?(PrefixAdapter)

  case prefix
  when Unitsml::Prefix, ::Unitsdb::Prefix,
       Unitsml::Unitsdb::PrefixReference
    new(prefix)
  when ::Unitsdb::PrefixReference
    from_id(prefix.id)
  when String
    from_name(prefix)
  else
    new(nil)
  end
end

Instance Method Details

#baseObject



56
57
58
# File 'lib/unitsml/prefix_adapter.rb', line 56

def base
  @raw&.base
end

#null?Boolean

Returns:

  • (Boolean)


52
53
54
# File 'lib/unitsml/prefix_adapter.rb', line 52

def null?
  @raw.nil?
end

#powerObject



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

def power
  @raw&.power
end

#prefix_nameObject



73
74
75
76
77
78
79
80
# File 'lib/unitsml/prefix_adapter.rb', line 73

def prefix_name
  case @raw
  when Unitsml::Prefix
    @raw.prefix_name
  when ::Unitsdb::Prefix, Unitsml::Unitsdb::PrefixReference
    symbolid
  end
end

#symbolidObject



64
65
66
67
68
69
70
71
# File 'lib/unitsml/prefix_adapter.rb', line 64

def symbolid
  case @raw
  when Unitsml::Prefix, Unitsml::Unitsdb::PrefixReference
    @raw.symbolid
  when ::Unitsdb::Prefix
    @raw.symbols.first&.ascii
  end
end