Class: Unitsml::PrefixAdapter
- Inherits:
-
Object
- Object
- Unitsml::PrefixAdapter
- 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
-
#raw ⇒ Object
readonly
Returns the value of attribute raw.
Class Method Summary collapse
Instance Method Summary collapse
- #base ⇒ Object
-
#initialize(raw) ⇒ PrefixAdapter
constructor
A new instance of PrefixAdapter.
- #null? ⇒ Boolean
- #power ⇒ Object
- #prefix_name ⇒ Object
- #symbolid ⇒ Object
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
#raw ⇒ Object (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
#base ⇒ Object
56 57 58 |
# File 'lib/unitsml/prefix_adapter.rb', line 56 def base @raw&.base end |
#null? ⇒ Boolean
52 53 54 |
# File 'lib/unitsml/prefix_adapter.rb', line 52 def null? @raw.nil? end |
#power ⇒ Object
60 61 62 |
# File 'lib/unitsml/prefix_adapter.rb', line 60 def power @raw&.power end |
#prefix_name ⇒ Object
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 |
#symbolid ⇒ Object
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 |