Module: Megatron::ApplicationHelper

Defined in:
app/helpers/megatron/application_helper.rb

Instance Method Summary collapse

Instance Method Details

#add_class(string, *classes) ⇒ Object



56
57
58
59
60
# File 'app/helpers/megatron/application_helper.rb', line 56

def add_class(string, *classes)
  string ||= ''
  string << " #{classes.join(' ')}"
  string
end

#embed_svg(filename, options = {}) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'app/helpers/megatron/application_helper.rb', line 28

def embed_svg(filename, options = {})
  group = 0
  file = File.read(Engine.root.join('app', 'assets', 'images', filename))
    .gsub(/<!--.+-->/, '')
    .gsub(/^\t{2,}\s*<\/?g>/, '')
    .gsub(/width=".+?"/, 'width="312"')
    .gsub(/\sheight.+$/, '')
    .gsub(/\t/, '  ')
    .gsub(/\n{3,}/m, "\n")
    .gsub(/^\s{2}<g>.+?^\s{2}<\/g>/m) { |g| 
      g.gsub(/^\s{4,}\s+/, '    ')
    }
    .gsub(/^<g>.+?^<\/g>/m) { |g|
      group += 1
      count = 0
      g.gsub(/^\s{2}<g>/) { |g| 
        count += 1
        %Q{  <g id="group-#{group}-cube-#{count}">}
      }
    }
  # doc = Nokogiri::HTML::DocumentFragment.parse file
  # svg = doc.at_css 'svg'
  # if options[:class].present?
  #   svg['class'] = options[:class]
  # end
  file.html_safe
end

#icon(name) ⇒ Object



16
17
18
# File 'app/helpers/megatron/application_helper.rb', line 16

def icon(name)
  (:span, class: "#{name}_icon", 'aria-hidden' => true) {  }
end

#megatron_asset_path(asset) ⇒ Object



3
4
5
6
7
# File 'app/helpers/megatron/application_helper.rb', line 3

def megatron_asset_path(asset)
  return "#{ENV['MEGATRON_ASSET_HOST']}/assets/megatron/#{asset}" if ENV['MEGATRON_ASSET_HOST']
  return "https://d1jybc9y95nviz.cloudfront.net/assets/megatron/#{asset}" if Rails.env.production?
  return "/assets/megatron/#{asset}"
end

#megatron_assets_tagsObject



9
10
11
12
13
14
# File 'app/helpers/megatron/application_helper.rb', line 9

def megatron_assets_tags
  version = Megatron::VERSION
  favicon_link_tag(megatron_asset_path('favicon.ico')) + 
  stylesheet_link_tag(megatron_asset_path("megatron-#{version}.css")) +
  javascript_include_tag(megatron_asset_path("megatron-#{version}.js"))
end

#options_from_args(args) ⇒ Object



20
21
22
23
24
25
26
# File 'app/helpers/megatron/application_helper.rb', line 20

def options_from_args(args)
  if args.last.is_a? Hash
    args.pop
  else
    {}
  end
end

#test_current_page(criteria) ⇒ Object



62
63
64
65
66
67
68
69
70
71
# File 'app/helpers/megatron/application_helper.rb', line 62

def test_current_page(criteria)
  return false unless criteria.present?
  
  test_params = criteria.delete(:params) || {}
  test_params[:controller] ||= criteria[:controller] if criteria[:controller].present?
  test_params[:action] ||= criteria[:action] if criteria[:action].present?

  test_params.all? {|k, v| test_here_key_value(k, v) }

end

#test_here_key_value(key, value, check_params = params) ⇒ Object



73
74
75
76
77
78
79
80
81
82
83
# File 'app/helpers/megatron/application_helper.rb', line 73

def test_here_key_value(key, value, check_params = params)
  if value.is_a?(Hash)
    value.all? {|k,v| params[k].present? && test_here_key_value(k, v, params[k]) }
  elsif value.is_a?(Array)
    value.detect {|v| test_here_key_value(key, v) }.present?
  elsif value.is_a?(Regexp)
    (check_params[key] =~ value) != nil
  else
    value == check_params[key]
  end
end