Class: JekyllFaviconGenerator::Icon

Inherits:
Jekyll::StaticFile
  • Object
show all
Includes:
Utilities
Defined in:
lib/jekyll-favicon-generator/icon.rb

Constant Summary

Constants included from Utilities

Utilities::LOGGER_PREFIX

Instance Method Summary collapse

Methods included from Utilities

#abort_with, #config, #debug, #error, #file_exists?, #find_source, #info, #source, #warn

Constructor Details

#initialize(site, icon) ⇒ Icon

Returns a new instance of Icon.



15
16
17
18
19
20
# File 'lib/jekyll-favicon-generator/icon.rb', line 15

def initialize(site, icon)
  @site = site
  @icon = icon

  super site, site.source, dest_dir, @icon["file"]
end

Instance Method Details

#mime ⇒ Object



60
61
62
# File 'lib/jekyll-favicon-generator/icon.rb', line 60

def mime
  @mime ||= MIMES[type]
end

#ref ⇒ Object



68
69
70
# File 'lib/jekyll-favicon-generator/icon.rb', line 68

def ref
  @ref ||= REFS[@icon["ref"]&.downcase]
end

#render_tag(url) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/jekyll-favicon-generator/icon.rb', line 42

def render_tag(url)
  return if ref.nil? || ref == :manifest

  attrs = attributes(url)
  unless tag_name && attrs
    warn "Unknown ref type for #{File.basename @icon["file"]}, skipping"
    return
  end

  attrs = attrs.map { |k, v| "#{k}=#{v.to_s.encode(:xml => :attr)}" }

  "<#{tag_name} #{attrs.join(" ")}>"
end

#size ⇒ Object



64
65
66
# File 'lib/jekyll-favicon-generator/icon.rb', line 64

def size
  @size ||= Size.new @icon["size"]
end

#type ⇒ Object



56
57
58
# File 'lib/jekyll-favicon-generator/icon.rb', line 56

def type
  @type ||= TYPES[File.extname(name).downcase] || :unknown
end

#write(dest) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/jekyll-favicon-generator/icon.rb', line 22

def write(dest)
  dest = destination dest
  src = @site.in_source_dir source

  FileUtils.mkdir_p(File.dirname(dest))
  debug "Writing #{File.basename dest}"

  case type
  when :png
    Vips.img_to_png src, dest, size.to_i
  when :ico
    Ico.img_to_ico src, dest, size.to_a
  when :svg
    Svg.optimize src, dest
  else
    warn "Unknown format for #{File.basename dest}, skipping"
    false
  end
end