Class: Jekyll::StaticFile

Inherits:
Object
  • Object
show all
Defined in:
lib/jekyll/static_file.rb

Constant Summary collapse

@@mtimes =

the cache of last modification times [path] -> mtime

Hash.new

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(site, base, dir, name) ⇒ StaticFile

Initialize a new StaticFile.

+site+ is the Site
+base+ is the String path to the <source>
+dir+ is the String path between <source> and the file
+name+ is the String filename of the file

Returns <StaticFile>



13
14
15
16
17
18
# File 'lib/jekyll/static_file.rb', line 13

def initialize(site, base, dir, name)
  @site = site
  @base = base
  @dir  = dir
  @name = name
end

Class Method Details

.reset_cacheObject

Reset the mtimes cache (for testing purposes).

Returns nothing.



69
70
71
72
73
# File 'lib/jekyll/static_file.rb', line 69

def self.reset_cache
  @@mtimes = Hash.new

  nil
end

Instance Method Details

#destination(dest) ⇒ Object

Obtain destination path.

+dest+ is the String path to the destination dir

Returns destination file path.



31
32
33
# File 'lib/jekyll/static_file.rb', line 31

def destination(dest)
  File.join(dest, @dir, @name)
end

#modified?Boolean

Is source path modified?

Returns true if modified since last write.

Returns:

  • (Boolean)


45
46
47
# File 'lib/jekyll/static_file.rb', line 45

def modified?
  @@mtimes[path] != mtime
end

#mtimeObject

Obtain mtime of the source path.

Returns last modifiaction time for this file.



38
39
40
# File 'lib/jekyll/static_file.rb', line 38

def mtime
  File.stat(path).mtime.to_i
end

#pathObject

Obtains source file path.

Returns source file path.



23
24
25
# File 'lib/jekyll/static_file.rb', line 23

def path
  File.join(@base, @dir, @name)
end

#write(dest) ⇒ Object

Write the static file to the destination directory (if modified).

+dest+ is the String path to the destination dir

Returns false if the file was not modified since last time (no-op).



53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/jekyll/static_file.rb', line 53

def write(dest)
  dest_path = destination(dest)
  dest_dir = File.join(dest, @dir)

  return false if File.exist? dest_path and !modified?
  @@mtimes[path] = mtime

  FileUtils.mkdir_p(dest_dir)
  FileUtils.cp(path, dest_path)

  true
end