Class: Jekyll::Tags::ImageEncodeTag

Inherits:
Liquid::Tag
  • Object
show all
Includes:
ImageEncodeCache
Defined in:
lib/jekyll_image_encode.rb

Instance Method Summary collapse

Methods included from ImageEncodeCache

#cached_base64_codes, #cached_base64_codes=

Constructor Details

#initialize(tag_name, url, options) ⇒ ImageEncodeTag

Returns a new instance of ImageEncodeTag.



18
19
20
21
# File 'lib/jekyll_image_encode.rb', line 18

def initialize(tag_name, url, options)
  @url = url.strip
  super
end

Instance Method Details

#encode_imageObject



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/jekyll_image_encode.rb', line 27

def encode_image
  require 'open-uri'
  require 'base64'
  
  encoded_image = ''

  if self.cached_base64_codes.has_key? @url
    encoded_image = self.cached_base64_codes[@url]
  else
    # p "Caching #{@url} as local base64 string ..."
    open(@url) do |image|
      encoded_image = Base64.strict_encode64(image.read)
    end
    self.cached_base64_codes.merge!(@url => encoded_image)
  end
  
  "data:image;base64, #{encoded_image}"
end

#render(context) ⇒ Object



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

def render(context)
  encode_image
end