module Molecule::Helper
Public Instance Methods
default_molecule_name()
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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') content_tag(:script, '', {defer: :defer, src: relative_link}).html_safe end
molecule_defer_style(molecule_name = default_molecule_name)
click to toggle source
# 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') content_tag(:noscript, class: 'defered-style') do content_tag(:link, '', {rel: :stylesheet, type: 'text/css', href: relative_link}).html_safe end.html_safe end
molecule_inject_script_name(molecule_name = default_molecule_name)
click to toggle source
# 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') content_tag(: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)
click to toggle source
# File lib/molecule/helper.rb, line 9 def molecule_inline_script molecule_name = default_molecule_name content_tag(: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)
click to toggle source
# 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)
click to toggle source
# File lib/molecule/helper.rb, line 5 def molecule_inline_style molecule_name = default_molecule_name content_tag(:style, molecule_asset_contents(molecule_name, 'inline', 'styles')).html_safe end
molecule_relative_path(molecule_name, asset_group, asset_type)
click to toggle source
# 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
Private Instance Methods
abolute_asset_path(molecule_name, asset_group, asset_type)
click to toggle source
# File lib/molecule/helper.rb, line 75 def abolute_asset_path molecule_name, asset_group, asset_type suffix, asset = find_asset(molecule_name, asset_group, asset_type) Rails.root.join('public', 'assets', suffix, asset) end
find_asset(molecule_name, asset_group, asset_type)
click to toggle source
# File lib/molecule/helper.rb, line 67 def find_asset molecule_name, asset_group, asset_type config = load_manifest(molecule_name, asset_group, asset_type) suffix = suffix_for_type(asset_type) asset_slug = "#{molecule_name}-#{asset_type}-#{asset_group}.#{suffix}" asset = config[asset_slug] return suffix, asset end
load_manifest(molecule_name, asset_group, asset_type)
click to toggle source
# File lib/molecule/helper.rb, line 91 def load_manifest molecule_name, asset_group, asset_type manifest = ::File.read(manifest_path(molecule_name, asset_group, asset_type)) JSON.parse(manifest); end
manifest_path(molecule_name, asset_group, asset_type)
click to toggle source
# File lib/molecule/helper.rb, line 96 def manifest_path molecule_name, asset_group, asset_type Rails.root.join('public', 'manifests', "#{molecule_name}/#{asset_type}-#{asset_group}.json") end
suffix_for_type(asset_type)
click to toggle source
# File lib/molecule/helper.rb, line 80 def suffix_for_type asset_type case asset_type when 'scripts' 'js' when 'styles' 'css' else raise "unknown asset type: #{asset_type}" end end