Class: Mxrb::Model::DesignMaterializer

Inherits:
Object
  • Object
show all
Defined in:
lib/mxrb/model/design_materializer.rb

Overview

Materializes the typed design-system contract into MXRB-owned theme files.

Constant Summary collapse

IMPORT =
'@import "mxrb-design-system";'

Instance Method Summary collapse

Constructor Details

#initialize(root, definition) ⇒ DesignMaterializer

Returns a new instance of DesignMaterializer.



12
13
14
15
# File 'lib/mxrb/model/design_materializer.rb', line 12

def initialize(root, definition)
  @root = File.expand_path(root)
  @definition = definition
end

Instance Method Details

#materialize!Object



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

def materialize!
  tokens = valued_tokens(@definition.fetch(:tokens, []))
  themes = resolved_themes
  return self if tokens.empty? && themes.empty?

  write(File.join('theme', 'web', '_mxrb-design-system.scss'), stylesheet(tokens, themes))
  ensure_import
  write(
    File.join('themesource', 'mxrb', 'web', 'design-properties.json'),
    JSON.pretty_generate(design_properties(tokens)) << "\n"
  )
  self
end