jekyll-favicon 0.1.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: dfd23a8cb75e3e389a6914a392a0fac67a173430
4
- data.tar.gz: 7bdfb6c1d06aa72a3cf836b39b81dd2de26adbdf
3
+ metadata.gz: 528cf7e662580cd58927a34caac7ca446e3fa3da
4
+ data.tar.gz: 2fb40f906fbab5874c093e49240a4b9f5bf88d7a
5
5
  SHA512:
6
- metadata.gz: 1fe8a7977a53239c9993a009b6c4918cad84d19dc7794558217c9717be71c42745fab5393445bb6d28c289a353611b89de9d1c28b3bf6bce93c79d603c415989
7
- data.tar.gz: 1ac895e0d3373700b1300ee110f6660a1f6fd570352eae8eab48d7c26ce4e81ae28f98ef2ba2c415df3e8619399701cab8fba42c7882b67fbcf0a8b4920c2497
6
+ metadata.gz: 671a32b58b47a30456b958a0590d62fc763c863b7eb5388bceb90b729f40c0295ff1523ad96510f26ecb01af1002fc9708743a8e28a3989afefb6272a7d83073
7
+ data.tar.gz: db6f23034ea242288b71d8c24309875ca59e7caa26cea99e3f65fe96a251858b902ced10fe30023f9a338dad19bc29fd59bf3335215744030ab710a67d139882
@@ -0,0 +1,5 @@
1
+ Metrics/BlockLength:
2
+ Exclude:
3
+ - Rakefile
4
+ - '**/*.rake'
5
+ - test/**/*.rb
@@ -1,5 +1,13 @@
1
1
  sudo: false
2
2
  language: ruby
3
3
  rvm:
4
+ - 2.5.0
4
5
  - 2.4.3
5
- before_install: gem install bundler -v 1.16.1
6
+ - 2.3.6
7
+ - 2.2.9
8
+ - 2.1.10
9
+ before_install:
10
+ - sudo apt-get update
11
+ - sudo apt-get install imagemagick libmagickcore-dev libmagickwand-dev
12
+ - sudo apt-get install -qq graphicsmagick
13
+ - gem install bundler -v 1.16.1
data/Gemfile CHANGED
@@ -1,6 +1,6 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
3
+ git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
4
4
 
5
5
  # Specify your gem's dependencies in jekyll-favicon.gemspec
6
6
  gemspec
@@ -1,14 +1,16 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- jekyll-favicon (0.1.2)
4
+ jekyll-favicon (0.2.0)
5
5
  jekyll (~> 3.7)
6
+ mini_magick (~> 4.5)
6
7
 
7
8
  GEM
8
9
  remote: https://rubygems.org/
9
10
  specs:
10
11
  addressable (2.5.2)
11
12
  public_suffix (>= 2.0.2, < 4.0)
13
+ ast (2.4.0)
12
14
  colorator (1.1.0)
13
15
  concurrent-ruby (1.0.5)
14
16
  em-websocket (0.5.1)
@@ -39,27 +41,40 @@ GEM
39
41
  listen (~> 3.0)
40
42
  kramdown (1.16.2)
41
43
  liquid (4.0.0)
42
- listen (3.1.5)
44
+ listen (3.0.8)
43
45
  rb-fsevent (~> 0.9, >= 0.9.4)
44
46
  rb-inotify (~> 0.9, >= 0.9.7)
45
- ruby_dep (~> 1.2)
46
47
  mercenary (0.3.6)
48
+ mini_magick (4.8.0)
47
49
  minitest (5.11.3)
50
+ parallel (1.12.1)
51
+ parser (2.5.0.5)
52
+ ast (~> 2.4.0)
48
53
  pathutil (0.16.1)
49
54
  forwardable-extended (~> 2.6)
55
+ powerpack (0.1.1)
50
56
  public_suffix (3.0.2)
57
+ rainbow (3.0.0)
51
58
  rake (10.5.0)
52
59
  rb-fsevent (0.10.3)
53
60
  rb-inotify (0.9.10)
54
61
  ffi (>= 0.5.0, < 2)
55
62
  rouge (3.1.1)
56
- ruby_dep (1.5.0)
63
+ rubocop (0.54.0)
64
+ parallel (~> 1.10)
65
+ parser (>= 2.5)
66
+ powerpack (~> 0.1)
67
+ rainbow (>= 2.2.2, < 4.0)
68
+ ruby-progressbar (~> 1.7)
69
+ unicode-display_width (~> 1.0, >= 1.0.1)
70
+ ruby-progressbar (1.9.0)
57
71
  safe_yaml (1.0.4)
58
- sass (3.5.5)
72
+ sass (3.5.6)
59
73
  sass-listen (~> 4.0.0)
60
74
  sass-listen (4.0.0)
61
75
  rb-fsevent (~> 0.9, >= 0.9.4)
62
76
  rb-inotify (~> 0.9, >= 0.9.7)
77
+ unicode-display_width (1.3.0)
63
78
 
64
79
  PLATFORMS
65
80
  ruby
@@ -69,6 +84,7 @@ DEPENDENCIES
69
84
  jekyll-favicon!
70
85
  minitest (~> 5.0)
71
86
  rake (~> 10.0)
87
+ rubocop (~> 0.54.0, >= 0.54.0)
72
88
 
73
89
  BUNDLED WITH
74
90
  1.16.1
data/README.md CHANGED
@@ -1,20 +1,45 @@
1
1
  # Jekyll Favicon
2
2
 
3
- This [Jekyll](https://jekyllrb.com) adds the tag `favicon`. Put it on your header and it will generate common favicon links. DRY!
3
+ This [Jekyll](https://jekyllrb.com) plugin adds:
4
4
 
5
- Notoriously inspired by [jekyll/jekyll-seo-tag](https://github.com/jekyll/jekyll-seo-tag).
5
+ - a generator for
6
+ - a `favicon.ico`
7
+ - multiple `favicon-[width]x[height].png`
8
+ - a [webmanifest](https://developer.mozilla.org/en-US/docs/Web/Manifest)
9
+ - a [browser configuration schema](https://docs.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/platform-apis/dn320426%28v=vs.85%29)
10
+ - a tag to generate all the corresponding links and metadata needed in the head tag
11
+
12
+ Note: this project depends on [minimagick/minimagick](https://github.com/minimagick/minimagick/), which depends on [ImageMagick](https://imagemagick.org/) or [GraphicsMagick](http://www.graphicsmagick.org/).
6
13
 
7
14
  ## Installation
8
15
 
9
16
  Add this line to your application's Gemfile:
10
17
 
11
18
  ```ruby
12
- gem 'jekyll-favicon', '~> 0.1.2', group: :jekyll_plugins
19
+ gem 'jekyll-favicon', '~> 0.2.0', group: :jekyll_plugins
13
20
  ```
14
21
 
15
22
  ## Usage
16
23
 
17
- Just add the favicon tag `{{ favicon }}`. For example, on your `index.html`
24
+ Note: this plugin does not work with the [github-pages](https://pages.github.com) build, but you can generate the site and push it.
25
+
26
+ ### Generator
27
+
28
+ By installing the plugin, it will be automatically active. It will search for the file `/favicon.svg` and generate set of files in `/assets/images` and few more items at the site's root. It also will exclude the original sources from being copied as a regular static file.
29
+
30
+ You can override whit your sites's `_config.yml`:
31
+
32
+ ```yaml
33
+ favicon:
34
+ source: custom-favicon-png-or.svg
35
+ path: /assets/img
36
+ ```
37
+
38
+ This plugin works best if you use an SVG with a square viewbox as the source, but you can also use a PNG instead (at least 558x588). Check [favicon.svg](/test/fixtures/sites/minimal/favicon.svg) as an example.
39
+
40
+ ### Favicon tag
41
+
42
+ To get the links and meta, just add the favicon tag `{{ favicon }}`. For example, on your `index.html`
18
43
 
19
44
  ```html
20
45
  ---
@@ -32,11 +57,16 @@ Just add the favicon tag `{{ favicon }}`. For example, on your `index.html`
32
57
 
33
58
  ## Development
34
59
 
35
- If you want to add something, just make a PR. There is a lot to do.
60
+ If you want to add something, just make a PR. There is a lot to do:
61
+
62
+ - Define and check SVG/PNG attributes before execute
63
+ - Review SVG to PNG conversion, it working as it is, but some parameters are hard coded and may only work with the samples
64
+ - Encapsulate image conversion
65
+ - Tests everywhere
36
66
 
37
67
  ## Contributing
38
68
 
39
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/jekyll-favicon. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
69
+ Bug reports and pull requests are welcome on GitHub at https://github.com/afaundez/jekyll-favicon. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
40
70
 
41
71
  ## License
42
72
 
@@ -44,4 +74,8 @@ The gem is available as open source under the terms of the [MIT License](https:/
44
74
 
45
75
  ## Code of Conduct
46
76
 
47
- Everyone interacting in the Jekyll::Favicon project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/[USERNAME]/jekyll-favicon/blob/master/CODE_OF_CONDUCT.md).
77
+ Everyone interacting in the Jekyll Favicon project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/afaundez/jekyll-favicon/blob/master/CODE_OF_CONDUCT.md).
78
+
79
+ ## Acknowledgments
80
+
81
+ Notoriously inspired by [jekyll/jekyll-seo-tag](https://github.com/jekyll/jekyll-seo-tag) and [jekyll/jekyll-sitemap](https://github.com/jekyll/jekyll-sitemap).
data/Rakefile CHANGED
@@ -7,4 +7,4 @@ Rake::TestTask.new(:test) do |t|
7
7
  t.test_files = FileList['test/**/*_test.rb']
8
8
  end
9
9
 
10
- task :default => :test
10
+ task default: :test
@@ -1,7 +1,7 @@
1
1
 
2
- lib = File.expand_path('../lib', __FILE__)
2
+ lib = File.expand_path('lib', __dir__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'jekyll-favicon/version'
4
+ require 'jekyll/favicon/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = 'jekyll-favicon'
@@ -9,8 +9,9 @@ Gem::Specification.new do |spec|
9
9
  spec.authors = ['Alvaro Faundez']
10
10
  spec.email = ['alvaro@faundez.net']
11
11
 
12
- spec.summary = %q{Jekyll plugin for favicon tag generation.}
13
- spec.description = %q{Jekyll-favicon is a jekyll plugin that adds the tag favicon, generating html tags for favicon.}
12
+ spec.summary = 'Jekyll plugin for favicon tag generation.'
13
+ spec.description = 'Jekyll-favicon is a jekyll plugin that adds the' \
14
+ ' tag favicon, generating html tags for favicon.'
14
15
  spec.homepage = 'https://github.com/afaundez/jekyll-favicon'
15
16
  spec.license = 'MIT'
16
17
 
@@ -22,8 +23,10 @@ Gem::Specification.new do |spec|
22
23
  spec.require_paths = ['lib']
23
24
 
24
25
  spec.add_development_dependency 'bundler', '~> 1.16'
25
- spec.add_development_dependency 'rake', '~> 10.0'
26
26
  spec.add_development_dependency 'minitest', '~> 5.0'
27
+ spec.add_development_dependency 'rake', '~> 10.0'
28
+ spec.add_development_dependency 'rubocop', '~> 0.54.0', '>= 0.54.0'
27
29
 
28
30
  spec.add_runtime_dependency 'jekyll', '~> 3.7'
31
+ spec.add_runtime_dependency 'mini_magick', '~> 4.5'
29
32
  end
@@ -1,5 +1,12 @@
1
- require 'jekyll-favicon/version'
2
-
1
+ # rubocop:disable Naming/FileName
2
+ # rubocop:enable Naming/FileName
3
3
  require 'jekyll'
4
-
5
- require_relative 'jekyll/tags/favicon'
4
+ require 'mini_magick'
5
+ require_relative 'string'
6
+ require_relative 'jekyll/favicon'
7
+ require_relative 'jekyll/favicon/version'
8
+ require_relative 'jekyll/favicon/hooks'
9
+ require_relative 'jekyll/favicon/metadata'
10
+ require_relative 'jekyll/favicon/icon'
11
+ require_relative 'jekyll/favicon/generator'
12
+ require_relative 'jekyll/favicon/tag'
@@ -0,0 +1,26 @@
1
+ require 'yaml'
2
+
3
+ module Jekyll
4
+ # Module for custom configurations and defaults
5
+ module Favicon
6
+ GEM_ROOT = File.dirname File.dirname __dir__
7
+ PROJECT_LIB = File.join GEM_ROOT, 'lib'
8
+ PROJECT_ROOT = File.join PROJECT_LIB, 'jekyll', 'favicon'
9
+ defaults_path = File.join PROJECT_ROOT, 'config', 'defaults.yml'
10
+ DEFAULTS = YAML.load_file(defaults_path)['favicon']
11
+
12
+ # rubocop:disable Style/ClassVars
13
+ def self.merge(overrides)
14
+ @@config = Jekyll::Utils.deep_merge_hashes DEFAULTS, (overrides || {})
15
+ end
16
+
17
+ def self.config
18
+ @@config ||= DEFAULTS
19
+ end
20
+ # rubocop:enable Style/ClassVars
21
+
22
+ def self.templates
23
+ File.join PROJECT_ROOT, 'templates'
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,45 @@
1
+ favicon:
2
+ source: favicon.svg
3
+ path: /assets/images
4
+ apple-touch-icon:
5
+ background: white
6
+ sizes:
7
+ - 57x57
8
+ - 76x76
9
+ - 120x120
10
+ - 152x152
11
+ - 167x167
12
+ - 180x180
13
+ safari-pinned-tab:
14
+ mask-icon-color: '#ffffff'
15
+ ie:
16
+ tile-color: '#ffffff'
17
+ sizes:
18
+ - 128x128
19
+ - 270x270
20
+ - 558x270
21
+ - 558x558
22
+ browserconfig-path: /
23
+ chrome:
24
+ sizes:
25
+ - 192x192
26
+ - 96x96
27
+ - 48x48
28
+ manifest-path: /
29
+ classic:
30
+ sizes:
31
+ - 16x16
32
+ - 32x32
33
+ - 64x64
34
+ - 144x144
35
+ svg:
36
+ density: 2000
37
+ dimensions: 1024x1024
38
+ png:
39
+ dimensions: 558x558
40
+ ico:
41
+ path: /
42
+ sizes:
43
+ - 48
44
+ - 32
45
+ - 16
@@ -0,0 +1,86 @@
1
+ module Jekyll
2
+ module Favicon
3
+ # Extended generator that creates all the stastic icons and metadata files
4
+ class Generator < Jekyll::Generator
5
+ priority :high
6
+
7
+ def generate(site)
8
+ @site = site
9
+ if File.exist? favicon_source
10
+ generate_files Favicon.config['sizes'], Favicon.config['path']
11
+ else
12
+ Jekyll.logger.warn 'Jekyll::Favicon: Missing' \
13
+ " #{Favicon.config['source']}, not generating" \
14
+ ' favicons.'
15
+ end
16
+ end
17
+
18
+ private
19
+
20
+ def generate_files(sizes, prefix)
21
+ favicon_template = favicon_tempfile
22
+ generate_ico_from favicon_template.path
23
+ generate_png_from favicon_template.path, prefix, sizes
24
+ if File.extname(favicon_source) == '.svg'
25
+ generate_svg_from favicon_source, prefix,
26
+ 'safari-pinned-tab.svg'
27
+ end
28
+ generate_metadata_from 'browserconfig.xml'
29
+ generate_metadata_from 'manifest.webmanifest'
30
+ end
31
+
32
+ def generate_ico_from(source)
33
+ ico_favicon = Icon.new(@site, '', 'favicon.ico', source)
34
+ @site.static_files << ico_favicon
35
+ end
36
+
37
+ def generate_png_from(source, prefix, sizes)
38
+ ['classic', 'ie', 'chrome', 'apple-touch-icon'].each do |template|
39
+ Favicon.config[template]['sizes'].each do |size|
40
+ png_favicon = Icon.new(@site, prefix, "favicon-#{size}.png", source)
41
+ @site.static_files << png_favicon
42
+ end
43
+ end
44
+ end
45
+
46
+ def generate_metadata_from(template)
47
+ metadata_page = Metadata.new(@site, @site.source, '', template)
48
+ @site.pages << metadata_page
49
+ end
50
+
51
+ def generate_svg_from(source, prefix, name)
52
+ svg_favicon = Icon.new(@site, prefix, name, source)
53
+ @site.static_files << svg_favicon
54
+ end
55
+
56
+ def favicon_source
57
+ File.join(*[@site.source, Favicon.config['source']].compact)
58
+ end
59
+
60
+ def favicon_tempfile
61
+ tempfile = Tempfile.new(['favicon_template', '.png'])
62
+ convert favicon_source, tempfile.path, Favicon.config
63
+ tempfile
64
+ end
65
+
66
+ def convert(source, output, options = {})
67
+ MiniMagick::Tool::Convert.new do |convert|
68
+ options_for convert, source, options
69
+ convert << favicon_source
70
+ convert << output
71
+ end
72
+ end
73
+
74
+ def options_for(convert, source, options)
75
+ convert.flatten
76
+ convert.background 'none'
77
+ if source.svg?
78
+ convert.density options['svg']['density']
79
+ convert.resize options['svg']['dimensions']
80
+ elsif source.png?
81
+ convert.resize options['png']['dimensions']
82
+ end
83
+ end
84
+ end
85
+ end
86
+ end
@@ -0,0 +1,4 @@
1
+ Jekyll::Hooks.register :site, :after_init do |site|
2
+ Jekyll::Favicon.merge site.config['favicon']
3
+ site.config['exclude'] << Jekyll::Favicon.config['source']
4
+ end
@@ -0,0 +1,84 @@
1
+ module Jekyll
2
+ module Favicon
3
+ # Extended static file that generates multpiple favicons
4
+ class Icon < Jekyll::StaticFile
5
+ attr_accessor :source
6
+
7
+ def initialize(site, dir, name, source, collection = nil)
8
+ @site = site
9
+ @base = @site.source
10
+ @dir = dir
11
+ @name = name
12
+ @source = source
13
+ @collection = collection
14
+ @relative_path = File.join(*[@dir, name].compact)
15
+ @extname = File.extname(@name)
16
+ @data = { 'name' => @name, 'layout' => nil }
17
+ end
18
+
19
+ def path
20
+ source
21
+ end
22
+
23
+ private
24
+
25
+ def copy_file(dest_path)
26
+ case @extname
27
+ when '.svg' then FileUtils.cp path, dest_path
28
+ when '.ico' then convert path, dest_path, ico_options
29
+ when '.png' then convert path, dest_path, png_options
30
+ else Jekyll.logger.warn "Jekyll::Favicon: Can't generate" \
31
+ " #{dest_path}, extension not supported supported."
32
+ end
33
+ end
34
+
35
+ def dimensions
36
+ @name[/favicon-(\d+x\d+).png/, 1].split('x').collect(&:to_i)
37
+ end
38
+
39
+ def png_options
40
+ options = {}
41
+ options[:background] = Favicon.config['background']
42
+ w, h = dimensions
43
+ options[:odd] = w != h
44
+ options[:resize] = dimensions.join('x')
45
+ options
46
+ end
47
+
48
+ def ico_options
49
+ options = {}
50
+ options[:background] = Favicon.config['background']
51
+ ico_sizes = Favicon.config['ico']['sizes'].join ','
52
+ options[:define] = "icon:auto-resize=#{ico_sizes}"
53
+ options
54
+ end
55
+
56
+ def convert(input, output, options = {})
57
+ MiniMagick::Tool::Convert.new do |convert|
58
+ options_for convert, options
59
+ convert << input
60
+ convert << output
61
+ end
62
+ end
63
+
64
+ def options_for(convert, options)
65
+ convert.flatten
66
+ convert.background background_for options[:resize]
67
+ convert.define options[:define] if options[:define]
68
+ return unless options[:resize]
69
+ convert.resize options[:resize]
70
+ return unless options[:odd]
71
+ convert.gravity 'center'
72
+ convert.extent options[:resize]
73
+ end
74
+
75
+ def background_for(size)
76
+ if Favicon.config['apple-touch-icon']['sizes'].include? size
77
+ Favicon.config['apple-touch-icon']['background']
78
+ else
79
+ 'none'
80
+ end
81
+ end
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,20 @@
1
+ module Jekyll
2
+ module Favicon
3
+ # Extended Page that generate files from ERB templates
4
+ class Metadata < Jekyll::Page
5
+ def initialize(site, base, dir, name)
6
+ @site = site
7
+ @base = base
8
+ @dir = dir
9
+ @name = name
10
+
11
+ process @name
12
+ template = File.read File.join Favicon.templates, "#{name}.erb"
13
+ self.content = ERB.new(template, nil, '-').result binding
14
+ self.data = {}
15
+ data['name'] = name
16
+ data['layout'] = nil
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,25 @@
1
+ module Jekyll
2
+ module Favicon
3
+ # New `favicon` tag for favicon include on templates
4
+ class Tag < Liquid::Tag
5
+ def initialize(tag_name, text, tokens)
6
+ super
7
+ @text = text
8
+ end
9
+
10
+ def render(context)
11
+ site = context.registers[:site]
12
+ templates_dir = Favicon.templates
13
+ head = "<!-- Begin Jekyll Favicon tag v#{Favicon::VERSION} -->"
14
+ body = %w[classic safari chrome ie].collect do |template|
15
+ template_path = File.join templates_dir, "#{template}.html.erb"
16
+ ERB.new(File.read(template_path), nil, '-').result(binding).strip
17
+ end
18
+ foot = '<!-- End Jekyll Favicon tag -->'
19
+ [head, body.join("\n"), foot].join("\n")
20
+ end
21
+ end
22
+ end
23
+ end
24
+
25
+ Liquid::Template.register_tag('favicon', Jekyll::Favicon::Tag)
@@ -0,0 +1,11 @@
1
+ <browserconfig>
2
+ <msapplication>
3
+ <tile>
4
+ <square310x310logo src="<%= File.join Favicon.config['path'], 'favicon-558x558.png' %>" />
5
+ <wide310x150logo src="<%= File.join Favicon.config['path'], 'favicon-558x270.png' %>" />
6
+ <square150x150logo src="<%= File.join Favicon.config['path'], 'favicon-270x270.png' %>" />
7
+ <square70x70logo src="<%= File.join Favicon.config['path'], 'favicon-128x128.png' %>" />
8
+ <TileColor><%= Favicon.config['ie']['tile-color'] %></TileColor>
9
+ </tile>
10
+ </msapplication>
11
+ </browserconfig>
@@ -0,0 +1,5 @@
1
+ <!-- Chrome -->
2
+ <%- Favicon.config['chrome']['sizes'].each do |size| -%>
3
+ <link rel="icon" sizes="<%= size %>" href="<%= File.join Favicon.config['path'], "favicon-#{size}.png" %>">
4
+ <%- end -%>
5
+ <link rel="manifest" href="<%= File.join Favicon.config['chrome']['manifest-path'], 'manifest.webmanifest' %>">
@@ -0,0 +1,6 @@
1
+ <!-- Classic -->
2
+ <link rel="shortcut icon" href="favicon.ico">
3
+ <link rel="icon" sizes="<%= Favicon.config['ico']['sizes'].collect{|s| "#{s}x#{s}"}.join ' ' %>" href="<%= File.join Favicon.config['ico']['path'], 'favicon.ico' %>">
4
+ <%- Favicon.config['classic']['sizes'].each do |size| -%>
5
+ <link rel="icon" sizes="<%= size %>" type="image/png" href="<%= File.join Favicon.config['path'], "favicon-#{size}.png" %>">
6
+ <%- end -%>
@@ -0,0 +1,4 @@
1
+ <!-- IE -->
2
+ <meta name="msapplication-TileColor" content="<%= Favicon.config['ie']['tile-color'] %>">
3
+ <meta name="msapplication-TileImage" content="<%= File.join Favicon.config['path'], 'favicon-144x144.png' %>">
4
+ <meta name="msapplication-config" content="<%= File.join Favicon.config['ie']['browserconfig-path'], 'browserconfig.xml' %>">
@@ -0,0 +1 @@
1
+ <%= JSON.pretty_generate icons: Favicon.config['chrome']['sizes'].collect{|size| {src: File.join(Favicon.config['path'], "favicon-#{size}.png"), type: 'png', sizes: size}} %>
@@ -0,0 +1,5 @@
1
+ <!-- Safari -->
2
+ <%- Favicon.config['apple-touch-icon']['sizes'].each do |size| -%>
3
+ <link rel="apple-touch-icon" sizes="<%= size %>" href="<%= File.join Favicon.config['path'], "favicon-#{size}.png" %>">
4
+ <%- end -%>
5
+ <link rel="mask-icon" color="<%= Favicon.config['safari-pinned-tab']['mask-icon-color'] %>" href="<%= File.join Favicon.config['path'], 'safari-pinned-tab.svg' %>">
@@ -1,5 +1,5 @@
1
1
  module Jekyll
2
2
  module Favicon
3
- VERSION = "0.1.2"
3
+ VERSION = '0.2.0'.freeze
4
4
  end
5
5
  end
@@ -0,0 +1,14 @@
1
+ # Extend String with extnames utils
2
+ class String
3
+ def svg?
4
+ ['.svg'].include? File.extname self
5
+ end
6
+
7
+ def png?
8
+ ['.png'].include? File.extname self
9
+ end
10
+
11
+ def ico?
12
+ ['.ico'].include? File.extname self
13
+ end
14
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-favicon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alvaro Faundez
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-03-17 00:00:00.000000000 Z
11
+ date: 2018-03-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.16'
27
+ - !ruby/object:Gem::Dependency
28
+ name: minitest
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '5.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '5.0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: rake
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -39,19 +53,25 @@ dependencies:
39
53
  - !ruby/object:Gem::Version
40
54
  version: '10.0'
41
55
  - !ruby/object:Gem::Dependency
42
- name: minitest
56
+ name: rubocop
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
59
  - - "~>"
46
60
  - !ruby/object:Gem::Version
47
- version: '5.0'
61
+ version: 0.54.0
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ version: 0.54.0
48
65
  type: :development
49
66
  prerelease: false
50
67
  version_requirements: !ruby/object:Gem::Requirement
51
68
  requirements:
52
69
  - - "~>"
53
70
  - !ruby/object:Gem::Version
54
- version: '5.0'
71
+ version: 0.54.0
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: 0.54.0
55
75
  - !ruby/object:Gem::Dependency
56
76
  name: jekyll
57
77
  requirement: !ruby/object:Gem::Requirement
@@ -66,6 +86,20 @@ dependencies:
66
86
  - - "~>"
67
87
  - !ruby/object:Gem::Version
68
88
  version: '3.7'
89
+ - !ruby/object:Gem::Dependency
90
+ name: mini_magick
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '4.5'
96
+ type: :runtime
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: '4.5'
69
103
  description: Jekyll-favicon is a jekyll plugin that adds the tag favicon, generating
70
104
  html tags for favicon.
71
105
  email:
@@ -75,6 +109,7 @@ extensions: []
75
109
  extra_rdoc_files: []
76
110
  files:
77
111
  - ".gitignore"
112
+ - ".rubocop.yml"
78
113
  - ".travis.yml"
79
114
  - CODE_OF_CONDUCT.md
80
115
  - Gemfile
@@ -86,8 +121,21 @@ files:
86
121
  - bin/setup
87
122
  - jekyll-favicon.gemspec
88
123
  - lib/jekyll-favicon.rb
89
- - lib/jekyll-favicon/version.rb
90
- - lib/jekyll/tags/favicon.rb
124
+ - lib/jekyll/favicon.rb
125
+ - lib/jekyll/favicon/config/defaults.yml
126
+ - lib/jekyll/favicon/generator.rb
127
+ - lib/jekyll/favicon/hooks.rb
128
+ - lib/jekyll/favicon/icon.rb
129
+ - lib/jekyll/favicon/metadata.rb
130
+ - lib/jekyll/favicon/tag.rb
131
+ - lib/jekyll/favicon/templates/browserconfig.xml.erb
132
+ - lib/jekyll/favicon/templates/chrome.html.erb
133
+ - lib/jekyll/favicon/templates/classic.html.erb
134
+ - lib/jekyll/favicon/templates/ie.html.erb
135
+ - lib/jekyll/favicon/templates/manifest.webmanifest.erb
136
+ - lib/jekyll/favicon/templates/safari.html.erb
137
+ - lib/jekyll/favicon/version.rb
138
+ - lib/string.rb
91
139
  homepage: https://github.com/afaundez/jekyll-favicon
92
140
  licenses:
93
141
  - MIT
@@ -108,7 +156,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
108
156
  version: '0'
109
157
  requirements: []
110
158
  rubyforge_project:
111
- rubygems_version: 2.6.14
159
+ rubygems_version: 2.2.5
112
160
  signing_key:
113
161
  specification_version: 4
114
162
  summary: Jekyll plugin for favicon tag generation.
@@ -1,26 +0,0 @@
1
- module Jekyll
2
- module Tags
3
- class Favicon < Liquid::Tag
4
-
5
- def initialize(tag_name, text, tokens)
6
- super
7
- @text = text
8
- end
9
-
10
- def render(context)
11
- <<-HTML
12
- <!-- Begin Jekyll Favicon tag v#{Jekyll::Favicon::VERSION} -->
13
- <link href="/apple-touch-icon.png" rel="apple-touch-icon" sizes="180x180">
14
- <link href="/favicon-32x32.png" rel="icon" sizes="32x32" type="image/png">
15
- <link href="/favicon-16x16.png" rel="icon" sizes="16x16" type="image/png">
16
- <link href="/manifest.json" rel="manifest">
17
- <link color="#5bbad5" href="/safari-pinned-tab.svg" rel="mask-icon">
18
- <meta content="#ffffff" name="theme-color" />
19
- <!-- End Jekyll Favicon tag -->
20
- HTML
21
- end
22
- end
23
- end
24
- end
25
-
26
- Liquid::Template.register_tag('favicon', Jekyll::Tags::Favicon)