Object
`Base` class for `Environment` and `Index`.
Preferred `find_asset` shorthand.
environment['application.js']
# File lib/sprockets/base.rb, line 109 def [](*args) find_asset(*args) end
Internal. Return a `AssetAttributes` for `path`.
# File lib/sprockets/base.rb, line 85 def attributes_for(path) AssetAttributes.new(self, path) end
Set persistent cache store
The cache store must implement a pair of getters and setters. Either `get(key)`/`set(key, value)`, `[key]`/`=value`, `read(key)`/`write(key, value)`.
# File lib/sprockets/base.rb, line 39 def cache=(cache) expire_index! @cache = cache end
Internal. Return content type of `path`.
# File lib/sprockets/base.rb, line 90 def content_type_of(path) attributes_for(path).content_type end
# File lib/sprockets/base.rb, line 113 def each_entry(root, &block) return to_enum(__method__, root) unless block_given? root = Pathname.new(root) unless root.is_a?(Pathname) paths = [] entries(root).sort.each do |filename| path = root.join(filename) paths << path if stat(path).directory? each_entry(path) do |subpath| paths << subpath end end end paths.sort_by(&:to_s).each(&block) nil end
# File lib/sprockets/base.rb, line 134 def each_file return to_enum(__method__) unless block_given? paths.each do |root| each_entry(root) do |path| if !stat(path).directory? yield path end end end nil end
# File lib/sprockets/base.rb, line 146 def each_logical_path return to_enum(__method__) unless block_given? files = {} each_file do |filename| logical_path = attributes_for(filename).logical_path yield logical_path unless files[logical_path] files[logical_path] = true end nil end
Works like `Dir.entries`.
Subclasses may cache this method.
# File lib/sprockets/base.rb, line 52 def entries(pathname) trail.entries(pathname) end
Read and compute digest of filename.
Subclasses may cache this method.
# File lib/sprockets/base.rb, line 66 def file_digest(path, data = nil) if stat = self.stat(path) # `data` maybe provided if data digest.update(data) # If its a file, digest the contents elsif stat.file? digest.file(path.to_s) # If its a directive, digest the list of filenames elsif stat.directory? contents = self.entries(path).join(',') digest.update(contents) end end end
Find asset by logical path or expanded path.
# File lib/sprockets/base.rb, line 95 def find_asset(path, options = {}) pathname = Pathname.new(path) if pathname.absolute? build_asset(attributes_for(pathname).logical_path, pathname, options) else find_asset_in_path(pathname, options) end end
Return an `Index`. Must be implemented by the subclass.
# File lib/sprockets/base.rb, line 45 def index raise NotImplementedError end
# File lib/sprockets/base.rb, line 172 def build_asset(logical_path, pathname, options) pathname = Pathname.new(pathname) return unless stat(pathname) # If there are any processors to run on the pathname, use # `BundledAsset`. Otherwise use `StaticAsset` and treat is as binary. if attributes_for(pathname).processors.any? BundledAsset.new(self, logical_path, pathname, options) else StaticAsset.new(self, logical_path, pathname) end end
Generated with the Darkfish Rdoc Generator 2.