Skip to content

Commit

Permalink
Cache file existence checks and the list of all stylesheet sources. M…
Browse files Browse the repository at this point in the history
…anually escape tag attributes.

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@7609 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
  • Loading branch information
jeremy committed Sep 24, 2007
1 parent 4b33306 commit 871b87a
Showing 1 changed file with 10 additions and 7 deletions.
17 changes: 10 additions & 7 deletions actionpack/lib/action_view/helpers/asset_tag_helper.rb
Expand Up @@ -288,27 +288,30 @@ def stylesheet_link_tag(*sources)
joined_stylesheet_name = (cache == true ? "all" : cache) + ".css" joined_stylesheet_name = (cache == true ? "all" : cache) + ".css"
joined_stylesheet_path = File.join(STYLESHEETS_DIR, joined_stylesheet_name) joined_stylesheet_path = File.join(STYLESHEETS_DIR, joined_stylesheet_name)


if !File.exists?(joined_stylesheet_path) @@file_exist_cache ||= {}
if !(@@file_exist_cache[joined_stylesheet_name] ||= File.exist?(joined_stylesheet_path))
File.open(joined_stylesheet_path, "w+") do |cache| File.open(joined_stylesheet_path, "w+") do |cache|
stylesheet_paths = expand_stylesheet_sources(sources).collect do |source| stylesheet_paths = expand_stylesheet_sources(sources).collect do |source|
compute_public_path(source, 'stylesheets', 'css', false) compute_public_path(source, 'stylesheets', 'css', false)
end end


cache.write(join_asset_file_contents(stylesheet_paths)) cache.write(join_asset_file_contents(stylesheet_paths))
end end

@@file_exist_cache[joined_stylesheet_name] = true
end end


tag("link", { tag("link", {
"rel" => "stylesheet", "type" => Mime::CSS, "media" => "screen", "rel" => "stylesheet", "type" => Mime::CSS, "media" => "screen",
"href" => stylesheet_path(joined_stylesheet_name) "href" => html_escape(stylesheet_path(joined_stylesheet_name))
}.merge(options)) }.merge(options), false, true)
else else
options.delete("cache") options.delete("cache")


expand_stylesheet_sources(sources).collect do |source| expand_stylesheet_sources(sources).collect do |source|
tag("link", { tag("link", {
"rel" => "stylesheet", "type" => Mime::CSS, "media" => "screen", "href" => stylesheet_path(source) "rel" => "stylesheet", "type" => Mime::CSS, "media" => "screen", "href" => html_escape(stylesheet_path(source))
}.merge(options)) }.merge(options), false, true)
end.join("\n") end.join("\n")
end end
end end
Expand Down Expand Up @@ -449,14 +452,14 @@ def expand_javascript_sources(sources)


def expand_stylesheet_sources(sources) def expand_stylesheet_sources(sources)
if sources.first == :all if sources.first == :all
sources = Dir[File.join(STYLESHEETS_DIR, '*.css')].collect { |file| File.basename(file).split(".", 1).first }.sort @@all_stylesheet_sources ||= Dir[File.join(STYLESHEETS_DIR, '*.css')].collect { |file| File.basename(file).split(".", 1).first }.sort
else else
sources sources
end end
end end


def join_asset_file_contents(paths) def join_asset_file_contents(paths)
paths.collect { |path| File.read(File.join(ASSETS_DIR, path.split("?").first)) }.join("\n\n") paths.collect { |path| File.read(File.join(ASSETS_DIR, path.split("?").first)) }.join("\n\n")
end end
end end
end end
Expand Down

0 comments on commit 871b87a

Please sign in to comment.