Module: Jekyll::Filters::Thumbnail

Defined in:
lib/jekyll/filters/thumbnail.rb

Overview

Liquid filter for use in templates

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.jekyll_site=(site) ⇒ Object



7
8
9
# File 'lib/jekyll/filters/thumbnail.rb', line 7

def self.jekyll_site=(site)
  @@jekyll_site = site
end

Instance Method Details

#jekyll_siteObject



11
12
13
# File 'lib/jekyll/filters/thumbnail.rb', line 11

def jekyll_site
  @@jekyll_site
end

#thumbnail(input, width = nil, height = nil, crop = nil, auto_rotate = nil) ⇒ Object

Generates a thumbnail and returns its alternate destination



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/jekyll/filters/thumbnail.rb', line 16

def thumbnail(input, width = nil, height = nil, crop = nil, auto_rotate = nil)
  return input unless input
  return input if input.downcase.end_with? '.gif'
  return input unless Jekyll.env == 'production'

  path = jekyll_site.in_source_dir input

  unless ::File.exist? path
    Jekyll.logger.warn 'Thumbnail:', "#{input} doesn't exist"
    return input
  end

  image = Jekyll::Images::Cache.cached_image path
  thumb = image.thumbnail(width: width,
                          height: height,
                          crop: crop,
                          auto_rotate: auto_rotate)

  thumb.write && thumb.optimize

  thumb.url
rescue Vips::Error => e
  Jekyll.logger.warn 'Thumbnail:', "Failed to process #{input}: #{e.message}"
  input
end