lib/sprockets/helpers/file_path.rb in sprockets-helpers-0.4.0 vs lib/sprockets/helpers/file_path.rb in sprockets-helpers-0.5.0
- old
+ new
@@ -2,60 +2,31 @@
module Helpers
# `FilePath` generates a full path for a regular file
# in the output path. It's used by #asset_path to generate
# paths when using asset tags like #javascript_include_tag,
# #stylesheet_link_tag, and #image_tag
- class FilePath
- # The path from which to generate the full path to the asset.
- attr_reader :source
+ class FilePath < BasePath
- # The various options used when generating the path.
- attr_reader :options
-
- # The base directory the file would be found in
- attr_reader :dir
-
- #
- def initialize(source, options = {})
- @source = source.to_s
- @options = options
- @dir = options[:dir].to_s
- end
-
- # Returns the full path to the asset, complete with
- # timestamp.
- def to_s
- path = rewrite_base_path(source)
- path = rewrite_query(path)
- path
- end
-
protected
- # Prepends the base path if the path is not
- # already an absolute path.
- def rewrite_base_path(path) # :nodoc:
- if path !~ %r(^/)
- File.join('/', dir, path)
- else
- path
+ # Hook for rewriting the base path.
+ def rewrite_path # :nodoc:
+ if uri.path[0] != ?/
+ prepend_path File.join('/', options[:dir].to_s)
end
end
- # Appends an asset timestamp based on the
- # modification time of the asset.
- def rewrite_query(path) # :nodoc:
- if timestamp = mtime(path)
- "#{path}?#{timestamp.to_i}"
- else
- path
+ # Hook for rewriting the query string.
+ def rewrite_query # :nodoc:
+ if timestamp = compute_mtime
+ append_query(timestamp.to_i.to_s)
end
end
# Returns the mtime for the given path (relative to
# the output path). Returns nil if the file doesn't exist.
- def mtime(path) # :nodoc:
- public_path = File.join(Helpers.public_path, path)
+ def compute_mtime # :nodoc:
+ public_path = File.join(Helpers.public_path, uri.path)
if File.exist?(public_path)
File.mtime(public_path)
else
nil