jekyll_image_encode 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/jekyll_image_encode.rb +49 -0
  2. metadata +47 -0
@@ -0,0 +1,49 @@
1
+ module ImageEncodeCache
2
+ @@cached_base64_codes = Hash.new
3
+
4
+ def cached_base64_codes
5
+ @@cached_base64_codes
6
+ end
7
+
8
+ def cached_base64_codes= val
9
+ @@cached_base64_codes = val
10
+ end
11
+ end
12
+
13
+ module Jekyll
14
+ module Tags
15
+ class ImageEncodeTag < Liquid::Tag
16
+ include ImageEncodeCache
17
+
18
+ def initialize(tag_name, url, options)
19
+ @url = url.strip
20
+ super
21
+ end
22
+
23
+ def render(context)
24
+ encode_image
25
+ end
26
+
27
+ def encode_image
28
+ require 'open-uri'
29
+ require 'base64'
30
+
31
+ encoded_image = ''
32
+
33
+ if self.cached_base64_codes.has_key? @url
34
+ encoded_image = self.cached_base64_codes[@url]
35
+ else
36
+ # p "Caching #{@url} as local base64 string ..."
37
+ open(@url) do |image|
38
+ encoded_image = Base64.encode64(image.read)
39
+ end
40
+ self.cached_base64_codes.merge!(@url => encoded_image)
41
+ end
42
+
43
+ "data:image;base64, #{encoded_image}"
44
+ end
45
+ end
46
+ end
47
+ end
48
+
49
+ Liquid::Template.register_tag('base64', Jekyll::Tags::ImageEncodeTag)
metadata ADDED
@@ -0,0 +1,47 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jekyll_image_encode
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - GSI
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-08-10 00:00:00.000000000 Z
13
+ dependencies: []
14
+ description: Jekyll tag that renders base64 codes of images fetched from the web
15
+ email: 2013@groovy-skills.com
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - lib/jekyll_image_encode.rb
21
+ homepage: https://github.com/GSI/jekyll_image_encode
22
+ licenses:
23
+ - MIT
24
+ post_install_message:
25
+ rdoc_options: []
26
+ require_paths:
27
+ - lib
28
+ required_ruby_version: !ruby/object:Gem::Requirement
29
+ none: false
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ required_rubygems_version: !ruby/object:Gem::Requirement
35
+ none: false
36
+ requirements:
37
+ - - ! '>='
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ requirements: []
41
+ rubyforge_project:
42
+ rubygems_version: 1.8.24
43
+ signing_key:
44
+ specification_version: 3
45
+ summary: Jekyll Image Encode
46
+ test_files: []
47
+ has_rdoc: