Class: AssetsBooster::Merger::CSS
Instance Attribute Summary
Attributes inherited from Base
#assets
Instance Method Summary
collapse
#adjust_relative_urls, #hostify_urls, #unquote
#absolute_url?, #external_url?, #path_difference
Methods inherited from Base
#initialize, #mtime
Instance Method Details
#dirname(path) ⇒ Object
58
59
60
|
# File 'lib/assets_booster/merger/css.rb', line 58
def dirname(path)
path.include?("/") ? File.dirname(path) : ""
end
|
#load_source(source) ⇒ Object
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
# File 'lib/assets_booster/merger/css.rb', line 39
def load_source(source)
super(source)
asset = assets.pop
source_folder = dirname(asset[:source])
source_folder << "/" unless source_folder == ""
asset[:css].gsub!(/@import\s+([^;\n]+)[;\n]*/).each do |import|
url = $1.gsub(/^url\((.+)\)/i, '\1')
url, quotes = unquote(url.strip)
next import if external_url?(url)
load_source(source_folder+url)
""
end
assets << asset
end
|
#merge(target) ⇒ Object
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
# File 'lib/assets_booster/merger/css.rb', line 12
def merge(target)
target_folder = dirname(target)
code = assets.inject("") do |code, asset|
source_folder = dirname(asset[:source])
asset[:css]= adjust_relative_urls(asset[:css], source_folder, target_folder)
code << asset[:css]
code << "\n"
end.strip
charset = nil
code.gsub!(/@charset\s+([^;\n]+)[;\n]*/).each do
current_charset, quotes = unquote($1)
current_charset.downcase!
if charset && charset != current_charset
raise ArgumentError, "source files have conflicting charsets (#{charset} != #{current_charset})"
end
charset = current_charset
""
end
if charset
code = "@charset \"#{charset}\";\n"+code
end
code
end
|
#name ⇒ Object
8
9
10
|
# File 'lib/assets_booster/merger/css.rb', line 8
def name
"CSS Merger"
end
|