class Jekyll::StaticFile

Public Class Methods

new(site, base, dir, name, collection = nil) click to toggle source

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_cache() click to toggle source

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

destination(dest) click to toggle source

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
destination_rel_dir() click to toggle source
# File lib/jekyll/static_file.rb, line 43
def destination_rel_dir
  if @collection
    @dir.gsub(/\A_/, '')
  else
    @dir
  end
end
extname() click to toggle source
# File lib/jekyll/static_file.rb, line 30
def extname
  File.extname(path)
end
modified?() click to toggle source

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
mtime() click to toggle source

Returns last modification time for this file.

# File lib/jekyll/static_file.rb, line 52
def mtime
  File.stat(path).mtime.to_i
end
path() click to toggle source

Returns source file path.

# File lib/jekyll/static_file.rb, line 21
def path
  File.join(*[@base, @dir, @name].compact)
end
relative_path() click to toggle source

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
to_liquid() click to toggle source
# 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(dest) click to toggle source

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
write?() click to toggle source

Whether to write the file to the filesystem

Returns true.

# File lib/jekyll/static_file.rb, line 66
def write?
  true
end