Class: JekyllRecker::Generators::ImageResize

Inherits:
Jekyll::Generator
  • Object
show all
Includes:
Base
Defined in:
lib/jekyll_recker/generators/image_resize.rb

Overview

Image Resize Generator

Instance Method Summary collapse

Methods included from Base

#bodies, #dates, #entries, #production?, #word_counts, #words

Methods included from Math

#average, #total

Methods included from Logging

included, #logger

Methods included from Date

#calculate_streaks, #slice_by_consecutive

Instance Method Details

#generate(site) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/jekyll_recker/generators/image_resize.rb', line 9

def generate(site)
  @site = site
  if production?
    logger.info 'production detected, skipping images'
    return
  else
    logger.info 'loading image resizing deps'
    require 'fastimage'
    require 'mini_magick'
  end
  logger.info 'checking images'
  resizeable_images.each do |f, d|
    logger.info "resizing #{f} to fit #{d}"
    image = MiniMagick::Image.new(f)
    image.resize d
  end
end

#graph?(file) ⇒ Boolean

Returns:

  • (Boolean)


35
36
37
# File 'lib/jekyll_recker/generators/image_resize.rb', line 35

def graph?(file)
  file.include?('/graphs/')
end

#image?(file) ⇒ Boolean

Returns:

  • (Boolean)


27
28
29
# File 'lib/jekyll_recker/generators/image_resize.rb', line 27

def image?(file)
  ['.jpg', 'jpeg', '.png', '.svg'].include? File.extname(file)
end

#imagesObject



39
40
41
# File 'lib/jekyll_recker/generators/image_resize.rb', line 39

def images
  @site.static_files.collect(&:path).select { |f| image?(f) }
end

#resizeable_imagesObject



43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/jekyll_recker/generators/image_resize.rb', line 43

def resizeable_images
  without_graphs = images.reject { |i| graph?(i) }
  with_sizes = without_graphs.map { |f| [f, FastImage.size(f)].flatten }
  with_sizes.select! { |f| too_big?(f[1], f[2]) }
  with_sizes.map do |f, w, h|
    dimensions = if w > h
                   '800x600'
                 else
                   '600x800'
                 end
    [f, dimensions]
  end
end

#too_big?(width, height) ⇒ Boolean

Returns:

  • (Boolean)


31
32
33
# File 'lib/jekyll_recker/generators/image_resize.rb', line 31

def too_big?(width, height)
  width > 800 || height > 800
end