Module: Molecule::Helper

Defined in:
lib/molecule/helper.rb

Instance Method Summary collapse

Instance Method Details

#default_molecule_nameObject



59
60
61
# File 'lib/molecule/helper.rb', line 59

def default_molecule_name
  "#{controller_name}_#{action_name}"
end

#molecule_asset_contents(molecule_name, asset_group, asset_type) ⇒ Object



36
37
38
# File 'lib/molecule/helper.rb', line 36

def molecule_asset_contents molecule_name, asset_group, asset_type
  ::File.read(abolute_asset_path(molecule_name, asset_group, asset_type)).html_safe
end

#molecule_defer_script(molecule_name = default_molecule_name) ⇒ Object



23
24
25
26
# File 'lib/molecule/helper.rb', line 23

def molecule_defer_script molecule_name = default_molecule_name
  relative_link = molecule_relative_path(molecule_name, 'defer', 'scripts')
  (:script, '', {defer: :defer, src: relative_link}).html_safe
end

#molecule_defer_style(molecule_name = default_molecule_name) ⇒ Object



16
17
18
19
20
21
# File 'lib/molecule/helper.rb', line 16

def molecule_defer_style molecule_name = default_molecule_name
  relative_link = molecule_relative_path(molecule_name, 'defer', 'styles')
  (:noscript, class: 'defered-style') do
    (:link, '', {rel: :stylesheet, type: 'text/css', href: relative_link}).html_safe
  end.html_safe
end

#molecule_inject_script_name(molecule_name = default_molecule_name) ⇒ Object



28
29
30
31
32
33
34
# File 'lib/molecule/helper.rb', line 28

def molecule_inject_script_name molecule_name = default_molecule_name
  relative_link = molecule_relative_path(molecule_name, 'defer', 'scripts')
  (:script, "window.script_name='#{relative_link}';".html_safe).html_safe
rescue
  Rails.logger.warn "no inline script name for '#{molecule_name}'"
  ''
end

#molecule_inline_script(molecule_name = default_molecule_name) ⇒ Object



9
10
11
12
13
14
# File 'lib/molecule/helper.rb', line 9

def molecule_inline_script molecule_name = default_molecule_name
  (:script, molecule_asset_contents(molecule_name, 'inline', 'scripts')).html_safe
rescue
  Rails.logger.warn "no inline script for '#{molecule_name}'"
  ''
end

#molecule_inline_sprite(molecule_name = default_molecule_name) ⇒ Object



45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/molecule/helper.rb', line 45

def molecule_inline_sprite molecule_name = default_molecule_name
  manifest_path = Rails.root.join('public', 'manifests', "#{molecule_name}/icons-inline.json")

  unless ::File.exists?(manifest_path)
    Rails.logger.warn("asset manifest not found: '#{manifest_path}'")
    return ''
  end

  manifest = ::File.read(manifest_path)
  json = JSON.parse(manifest);
  asset_path = Rails.root.join('public', 'assets', 'svg', json["#{molecule_name}.svg"])
  ::File.read(asset_path).html_safe
end

#molecule_inline_style(molecule_name = default_molecule_name) ⇒ Object



5
6
7
# File 'lib/molecule/helper.rb', line 5

def molecule_inline_style molecule_name = default_molecule_name
  (:style, molecule_asset_contents(molecule_name, 'inline', 'styles')).html_safe
end

#molecule_relative_path(molecule_name, asset_group, asset_type) ⇒ Object



40
41
42
43
# File 'lib/molecule/helper.rb', line 40

def molecule_relative_path molecule_name, asset_group, asset_type
  suffix, asset = find_asset(molecule_name, asset_group, asset_type)
  "/assets/#{suffix}/#{asset}"
end