jeremyboles-smart-asset-helper 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,90 @@
|
|
1
|
+
require 'asset_manager'
|
2
|
+
|
3
|
+
module SmartAssetHelper
|
4
|
+
|
5
|
+
# Prevent a javscript file from being required
|
6
|
+
def deny_javascript(*javascripts)
|
7
|
+
@_asset_manager.deny(:js, javascripts)
|
8
|
+
end
|
9
|
+
|
10
|
+
# Prevent a stylesheet file from being required
|
11
|
+
def deny_stylesheet(*stylesheets)
|
12
|
+
@_asset_manager.deny(:css, stylesheets)
|
13
|
+
end
|
14
|
+
|
15
|
+
# Print required javascript
|
16
|
+
def include_javascript(*args)
|
17
|
+
options = extract_options(args)
|
18
|
+
javascript = javascript_include_tag(*include_assets(:js, args, options))
|
19
|
+
javascript += ie_assets(:js, args) if options[:ie]
|
20
|
+
javascript.gsub("\n", '')
|
21
|
+
end
|
22
|
+
|
23
|
+
# Print required stylesheets
|
24
|
+
def include_stylesheets(*args)
|
25
|
+
options = extract_options(args)
|
26
|
+
stylesheets = stylesheet_link_tag(*include_assets(:css, args, options))
|
27
|
+
stylesheets += ie_assets(:css, args) if options[:ie]
|
28
|
+
stylesheets.gsub("\n", '')
|
29
|
+
end
|
30
|
+
|
31
|
+
# Require bot Javscript and CSS
|
32
|
+
def require_assets(*assets)
|
33
|
+
require_stylesheet(*assets)
|
34
|
+
require_javascript(*assets)
|
35
|
+
end
|
36
|
+
|
37
|
+
# Request a javascript to be outputed by include_javascript
|
38
|
+
def require_javascript(*javascripts)
|
39
|
+
@_asset_manager.add(:js, javascripts)
|
40
|
+
end
|
41
|
+
|
42
|
+
# Request a stylesheet to be outputed by include_stylesheets
|
43
|
+
def require_stylesheet(*stylesheets)
|
44
|
+
@_asset_manager.add(:css, stylesheets)
|
45
|
+
end
|
46
|
+
|
47
|
+
private
|
48
|
+
|
49
|
+
def conditional_comment(text, version)
|
50
|
+
"<!--[if IE #{version}]>#{text}<![endif]-->"
|
51
|
+
end
|
52
|
+
|
53
|
+
def extract_options(args)
|
54
|
+
options = args.delete(args.last) if args.last.is_a?(Hash)
|
55
|
+
options || {}
|
56
|
+
end
|
57
|
+
|
58
|
+
def ie_assets(asset_type, args)
|
59
|
+
ie_assets = ''
|
60
|
+
%w{ 6 7 8 }.each do |v|
|
61
|
+
assets = @_asset_manager.required_with_extra(asset_type, "ie#{v}")
|
62
|
+
|
63
|
+
unless assets.blank?
|
64
|
+
assets = case asset_type
|
65
|
+
when :css : stylesheet_link_tag(assets)
|
66
|
+
when :js : javascript_include_tag(assets)
|
67
|
+
end
|
68
|
+
|
69
|
+
ie_assets += conditional_comment(assets.to_s, v)
|
70
|
+
end
|
71
|
+
end
|
72
|
+
ie_assets
|
73
|
+
end
|
74
|
+
|
75
|
+
def include_assets(asset_type, args, options)
|
76
|
+
@_asset_manager.append(asset_type, args) unless args.empty?
|
77
|
+
@_asset_manager.auto_add(asset_type, params) if options[:auto]
|
78
|
+
@_asset_manager.required(asset_type)
|
79
|
+
end
|
80
|
+
|
81
|
+
end
|
82
|
+
|
83
|
+
ActionView::Base.class_eval { include SmartAssetHelper }
|
84
|
+
|
85
|
+
ActionController::Base.class_eval do
|
86
|
+
before_filter :create_asset_manager_instance
|
87
|
+
def create_asset_manager_instance
|
88
|
+
@_asset_manager = AssetManager.new
|
89
|
+
end
|
90
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module SmarterAssetTagHelper
|
2
|
+
|
3
|
+
def self.included(base)
|
4
|
+
base.send :include, InstanceMethods
|
5
|
+
base.send :alias_method_chain, :javascript_include_tag, :query_strings
|
6
|
+
end
|
7
|
+
|
8
|
+
module InstanceMethods
|
9
|
+
|
10
|
+
# This is to cope with Rails appending '.js' to things like Google maps API and other things
|
11
|
+
# that have query strings
|
12
|
+
def javascript_include_tag_with_query_strings(*sources)
|
13
|
+
query_strings_sources = sources.flatten.select { |s| s =~ /[\?]/ }
|
14
|
+
sources = sources.flatten - query_strings_sources
|
15
|
+
|
16
|
+
script_tag(query_strings_sources) + javascript_include_tag_without_query_strings(*sources)
|
17
|
+
end
|
18
|
+
|
19
|
+
def script_tag(*sources)
|
20
|
+
sources.map do |s|
|
21
|
+
content_tag(:script, '', :src => s, :type => 'text/javascript')
|
22
|
+
end.join
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
ActionView::Base.class_eval { include SmarterAssetTagHelper }
|
data/rails/init.rb
CHANGED
@@ -1,14 +1 @@
|
|
1
|
-
require '
|
2
|
-
require 'action_view/helpers/smarter_asset_tag_helper'
|
3
|
-
|
4
|
-
ActionView::Base.class_eval do
|
5
|
-
include ActionView::Helpers::SmartAssetHelper
|
6
|
-
include ActionView::Helpers::SmarterAssetTagHelper
|
7
|
-
end
|
8
|
-
|
9
|
-
ActionController::Base.class_eval do
|
10
|
-
before_filter :create_asset_manager_instance
|
11
|
-
def create_asset_manager_instance
|
12
|
-
@_asset_manager = AssetManager.new
|
13
|
-
end
|
14
|
-
end
|
1
|
+
require 'smart_asset_helper'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jeremyboles-smart-asset-helper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeremy Boles
|
@@ -38,9 +38,9 @@ files:
|
|
38
38
|
- README.rdoc
|
39
39
|
- Rakefile
|
40
40
|
- init.rb
|
41
|
-
- lib/action_view/helpers/smart_asset_helper.rb
|
42
|
-
- lib/action_view/helpers/smarter_asset_tag_helper.rb
|
43
41
|
- lib/asset_manager.rb
|
42
|
+
- lib/smart_asset_helper.rb
|
43
|
+
- lib/smarter_asset_tag_helper.rb
|
44
44
|
- rails/init.rb
|
45
45
|
- test/small_asset_helper_test.rb
|
46
46
|
- test/test_helper.rb
|
@@ -1,85 +0,0 @@
|
|
1
|
-
require 'asset_manager'
|
2
|
-
|
3
|
-
module ActionView
|
4
|
-
module Helpers
|
5
|
-
module SmartAssetHelper
|
6
|
-
|
7
|
-
# Prevent a javscript file from being required
|
8
|
-
def deny_javascript(*javascripts)
|
9
|
-
@_asset_manager.deny(:js, javascripts)
|
10
|
-
end
|
11
|
-
|
12
|
-
# Prevent a stylesheet file from being required
|
13
|
-
def deny_stylesheet(*stylesheets)
|
14
|
-
@_asset_manager.deny(:css, stylesheets)
|
15
|
-
end
|
16
|
-
|
17
|
-
# Print required javascript
|
18
|
-
def include_javascript(*args)
|
19
|
-
options = extract_options(args)
|
20
|
-
javascript = javascript_include_tag(*include_assets(:js, args, options))
|
21
|
-
javascript += ie_assets(:js, args) if options[:ie]
|
22
|
-
javascript.gsub("\n", '')
|
23
|
-
end
|
24
|
-
|
25
|
-
# Print required stylesheets
|
26
|
-
def include_stylesheets(*args)
|
27
|
-
options = extract_options(args)
|
28
|
-
stylesheets = stylesheet_link_tag(*include_assets(:css, args, options))
|
29
|
-
stylesheets += ie_assets(:css, args) if options[:ie]
|
30
|
-
stylesheets.gsub("\n", '')
|
31
|
-
end
|
32
|
-
|
33
|
-
# Require bot Javscript and CSS
|
34
|
-
def require_assets(*assets)
|
35
|
-
require_stylesheet(*assets)
|
36
|
-
require_javascript(*assets)
|
37
|
-
end
|
38
|
-
|
39
|
-
# Request a javascript to be outputed by include_javascript
|
40
|
-
def require_javascript(*javascripts)
|
41
|
-
@_asset_manager.add(:js, javascripts)
|
42
|
-
end
|
43
|
-
|
44
|
-
# Request a stylesheet to be outputed by include_stylesheets
|
45
|
-
def require_stylesheet(*stylesheets)
|
46
|
-
@_asset_manager.add(:css, stylesheets)
|
47
|
-
end
|
48
|
-
|
49
|
-
private
|
50
|
-
|
51
|
-
def conditional_comment(text, version)
|
52
|
-
"<!--[if IE #{version}]>#{text}<![endif]-->"
|
53
|
-
end
|
54
|
-
|
55
|
-
def extract_options(args)
|
56
|
-
options = args.delete(args.last) if args.last.is_a?(Hash)
|
57
|
-
options || {}
|
58
|
-
end
|
59
|
-
|
60
|
-
def ie_assets(asset_type, args)
|
61
|
-
ie_assets = ''
|
62
|
-
%w{ 6 7 8 }.each do |v|
|
63
|
-
assets = @_asset_manager.required_with_extra(asset_type, "ie#{v}")
|
64
|
-
|
65
|
-
unless assets.blank?
|
66
|
-
assets = case asset_type
|
67
|
-
when :css : stylesheet_link_tag(assets)
|
68
|
-
when :js : javascript_include_tag(assets)
|
69
|
-
end
|
70
|
-
|
71
|
-
ie_assets += conditional_comment(assets.to_s, v)
|
72
|
-
end
|
73
|
-
end
|
74
|
-
ie_assets
|
75
|
-
end
|
76
|
-
|
77
|
-
def include_assets(asset_type, args, options)
|
78
|
-
@_asset_manager.append(asset_type, args) unless args.empty?
|
79
|
-
@_asset_manager.auto_add(asset_type, params) if options[:auto]
|
80
|
-
@_asset_manager.required(asset_type)
|
81
|
-
end
|
82
|
-
|
83
|
-
end
|
84
|
-
end
|
85
|
-
end
|
@@ -1,30 +0,0 @@
|
|
1
|
-
module ActionView
|
2
|
-
module Helpers
|
3
|
-
module SmarterAssetTagHelper
|
4
|
-
|
5
|
-
def self.included(base)
|
6
|
-
base.send :include, InstanceMethods
|
7
|
-
base.send :alias_method_chain, :javascript_include_tag, :query_strings
|
8
|
-
end
|
9
|
-
|
10
|
-
module InstanceMethods
|
11
|
-
|
12
|
-
# This is to cope with Rails appending '.js' to things like Google maps API and other things
|
13
|
-
# that have query strings
|
14
|
-
def javascript_include_tag_with_query_strings(*sources)
|
15
|
-
query_strings_sources = sources.flatten.select { |s| s =~ /[\?]/ }
|
16
|
-
sources = sources.flatten - query_strings_sources
|
17
|
-
|
18
|
-
script_tag(query_strings_sources) + javascript_include_tag_without_query_strings(*sources)
|
19
|
-
end
|
20
|
-
|
21
|
-
def script_tag(*sources)
|
22
|
-
sources.map do |s|
|
23
|
-
content_tag(:script, '', :src => s, :type => 'text/javascript')
|
24
|
-
end.join
|
25
|
-
end
|
26
|
-
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|