Class: CleoDesignTokens::SemanticBucket

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

Overview

theme: defaults to "base"$themes never carries a "base" key (Base isn't an override of itself), so the default and an explicit theme: :base resolve identically with no special-casing.

Instance Method Summary collapse

Constructor Details

#initialize(lookup) ⇒ SemanticBucket

Returns a new instance of SemanticBucket.



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

def initialize(lookup)
  @lookup = lookup
end

Instance Method Details

#fetch(key, theme: "base") ⇒ Object

Raises:



15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/cleo_design_tokens/semantic_bucket.rb', line 15

def fetch(key, theme: "base")
  theme = theme.to_s
  raise UnknownThemeError, "unknown theme: #{theme.inspect}" unless THEMES.include?(theme)

  entry = @lookup.fetch(key) { raise UnknownTokenError, "unknown design token: #{key.inspect}" }
  value = resolve(entry, theme)
  if value.nil?
    raise UnknownTokenError,
          "design token #{key.inspect} has no Base value and no override for theme #{theme.inspect}"
  end

  value
end