Module: Javascripter::Helper

Defined in:
lib/javascripter/helper.rb

Instance Method Summary collapse

Instance Method Details

#add_javascript(*javascripts) ⇒ Object

add a javascript to the include list



91
92
93
94
95
96
# File 'lib/javascripter/helper.rb', line 91

def add_javascript(*javascripts)
  @javascripts_add ||= []
  javascripts.each do |javascript|
    @javascripts_add << javascript
  end
end

#ignore_javascript(*javascripts) ⇒ Object

ignore a javascript



99
100
101
102
103
104
# File 'lib/javascripter/helper.rb', line 99

def ignore_javascript(*javascripts)
  @javascripts_ignore ||= []
  javascripts.each do |javascript|
    @javascripts_ignore << javascript
  end
end

#javascript(*input) ⇒ Object

alias for javascript_include_tag



5
6
7
8
9
# File 'lib/javascripter/helper.rb', line 5

def javascript(*input)
  input = [input].flatten

  javascript_include_tag(*input)
end

#javascript_folder(path) ⇒ Object

returns an entire directory of javascripts recursively



20
21
22
23
24
25
26
27
28
29
30
# File 'lib/javascripter/helper.rb', line 20

def javascript_folder(path)
  if use_cache? 
    return javascript("min/#{path}.js")
  else
    result = []
    Dir["#{Rails.public_path}/javascripts/#{path}/**/*.js"].each do |item|
      result << item.gsub("#{Rails.public_path}/javascripts/", "")
    end
    return javascript(result)
  end
end

#javascripts(options = {}) ⇒ Object

Override this if needed



12
13
14
15
16
17
# File 'lib/javascripter/helper.rb', line 12

def javascripts(options={})
  [
    page_javascripts(options),
    javascript("application")
  ].join("\n")
end

#page_javascripts(options = {}) ⇒ Object

Include Javascripts on the page options to an array of strings for javascripts to include options sets an array of strings for javascripts to exclude options sets the cache option to javascript_include_tag (only for nonconditional items)

Automatically includes javascripts (if they exist on filesystem)

  • javascripts for [controller]/[controller].js and [controller]/[action].js


40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/javascripter/helper.rb', line 40

def page_javascripts(options={})

  # initialize collection
  javascripts = []
  conditional_scripts = []
  @javascripts_add ||= []
  @javascripts_ignore ||= []

  # Additional scripts (if requested)
  if options[:include]
    @javascripts_add = [options[:include]].flatten + @javascripts_add
  end

  # Exclude scripts (if requested)
  if options[:exclude]
    @javascripts_ignore = [options[:exclude]].flatten + @javascripts_ignore
  end

  # Add more scripts
  @javascripts_add.each do |javascript|
    javascripts << javascript
  end

  # Ignore scripts
  @javascripts_ignore.each do |javascript|
    javascripts.delete(javascript)
  end

  # dedup javascript array
  javascripts.uniq!

  # Build Output
  html_output = javascript_include_tag(*javascripts)

  # Controller/action scripts
  conditional_scripts << "#{controller.controller_name}"
  conditional_scripts << "#{controller.controller_name}/#{controller.action_name}"
  
  # only add conditional scripts if they exist on disk
  conditional_scripts.each do |javascript|
    if File.exist?("#{RAILS_ROOT}/public/javascripts/#{javascript}.js")
      html_output << "\n"
      html_output << javascript_include_tag(javascript)
    end
  end

  # return output
  return html_output
end