initiale Version (klassische Seitennavigation, keine Themes)
This commit is contained in:
80
_plugins/jekyll_minimagick.rb
Normal file
80
_plugins/jekyll_minimagick.rb
Normal file
@ -0,0 +1,80 @@
|
||||
require 'mini_magick'
|
||||
|
||||
module Jekyll
|
||||
module JekyllMinimagick
|
||||
|
||||
class GeneratedImageFile < Jekyll::StaticFile
|
||||
# Initialize a new GeneratedImage.
|
||||
# +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
|
||||
# +preset+ is the Preset hash from the config.
|
||||
#
|
||||
# Returns <GeneratedImageFile>
|
||||
def initialize(site, base, dir, name, preset)
|
||||
@site = site
|
||||
@base = base
|
||||
@dir = dir
|
||||
@name = name
|
||||
@dst_dir = preset.delete('destination')
|
||||
@src_dir = preset.delete('source')
|
||||
@commands = preset
|
||||
@relative_path = File.join(*[@dir, @name].compact)
|
||||
@extname = File.extname(@name)
|
||||
end
|
||||
|
||||
# Obtains source file path by substituting the preset's source directory
|
||||
# for the destination directory.
|
||||
#
|
||||
# Returns source file path.
|
||||
def path
|
||||
File.join(@base, @dir.sub(@dst_dir, @src_dir), @name)
|
||||
end
|
||||
|
||||
# Use MiniMagick to create a derivative image at the destination
|
||||
# specified (if the original is modified).
|
||||
# +dest+ is the String path to the destination dir
|
||||
#
|
||||
# Returns false if the file was not modified since last time (no-op).
|
||||
def write(dest)
|
||||
dest_path = destination(dest)
|
||||
|
||||
return false if File.exist? dest_path and !modified?
|
||||
self.class.mtimes[path] = mtime
|
||||
|
||||
FileUtils.mkdir_p(File.dirname(dest_path))
|
||||
image = ::MiniMagick::Image.open(path)
|
||||
image.combine_options do |c|
|
||||
@commands.each_pair do |command, arg|
|
||||
c.send command, arg
|
||||
end
|
||||
end
|
||||
image.write dest_path
|
||||
|
||||
true
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
class MiniMagickGenerator < Generator
|
||||
safe true
|
||||
|
||||
# Find all image files in the source directories of the presets specified
|
||||
# in the site config. Add a GeneratedImageFile to the static_files stack
|
||||
# for later processing.
|
||||
def generate(site)
|
||||
return unless site.config['mini_magick']
|
||||
|
||||
site.config['mini_magick'].each_pair do |name, preset|
|
||||
Dir.chdir preset['source'] do
|
||||
Dir.glob(File.join("**", "*.{png,jpg,jpeg,gif}")) do |source|
|
||||
site.static_files << GeneratedImageFile.new(site, site.source, preset['destination'], source, preset.clone)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user