class Jekyll::StaticFile
Public Class Methods
Initialize a new StaticFile.
site - The Site. base - The String path to the <source>. dir - The String path between <source> and the file. name - The String filename of the file.
# File lib/jekyll/static_file.rb, line 12 def initialize(site, base, dir, name, collection = nil) @site = site @base = base @dir = dir @name = name @collection = collection end
Reset the mtimes cache (for testing purposes).
Returns nothing.
# File lib/jekyll/static_file.rb, line 91 def self.reset_cache @@mtimes = Hash.new nil end
Public Instance Methods
Obtain destination path.
dest - The String path to the destination dir.
Returns destination file path.
# File lib/jekyll/static_file.rb, line 39 def destination(dest) @site.in_dest_dir(*[dest, destination_rel_dir, @name].compact) end
# File lib/jekyll/static_file.rb, line 43 def destination_rel_dir if @collection @dir.gsub(/\A_/, '') else @dir end end
# File lib/jekyll/static_file.rb, line 30 def extname File.extname(path) end
Is source path modified?
Returns true if modified since last write.
# File lib/jekyll/static_file.rb, line 59 def modified? @@mtimes[path] != mtime end
Returns last modification time for this file.
# File lib/jekyll/static_file.rb, line 52 def mtime File.stat(path).mtime.to_i end
Returns source file path.
# File lib/jekyll/static_file.rb, line 21 def path File.join(*[@base, @dir, @name].compact) end
Returns the source file path relative to the site source
# File lib/jekyll/static_file.rb, line 26 def relative_path @relative_path ||= File.join(*[@dir, @name].compact) end
# File lib/jekyll/static_file.rb, line 96 def to_liquid { "path" => File.join("", relative_path), "modified_time" => mtime.to_s, "extname" => File.extname(relative_path) } end
Write the static file to the destination directory (if modified).
dest - The String path to the destination dir.
Returns false if the file was not modified since last time (no-op).
# File lib/jekyll/static_file.rb, line 75 def write(dest) dest_path = destination(dest) return false if File.exist?(dest_path) and !modified? @@mtimes[path] = mtime FileUtils.mkdir_p(File.dirname(dest_path)) FileUtils.rm(dest_path) if File.exist?(dest_path) FileUtils.cp(path, dest_path) true end
Whether to write the file to the filesystem
Returns true.
# File lib/jekyll/static_file.rb, line 66 def write? true end