jekyll-favicon 0.2.9 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (64) hide show
  1. checksums.yaml +4 -4
  2. data/.devcontainer/Dockerfile +22 -0
  3. data/.devcontainer/devcontainer.json +42 -0
  4. data/.github/PULL_REQUEST_TEMPLATE.md +4 -4
  5. data/.github/workflows/gem-push.yml +3 -3
  6. data/.github/workflows/test.yml +38 -0
  7. data/.gitignore +5 -0
  8. data/.reek.yml +25 -0
  9. data/.vscode/launch.json +16 -0
  10. data/.vscode/settings.json +7 -0
  11. data/.vscode/tasks.json +15 -0
  12. data/CHANGELOG.md +23 -1
  13. data/Gemfile +3 -1
  14. data/README.md +81 -34
  15. data/Rakefile +9 -7
  16. data/bin/console +1 -0
  17. data/bin/debug +22 -0
  18. data/config/jekyll/favicon.yml +115 -0
  19. data/config/jekyll/favicon/static_file.yml +3 -0
  20. data/config/jekyll/favicon/static_file/convertible.yml +41 -0
  21. data/config/jekyll/favicon/static_file/mutable.yml +22 -0
  22. data/config/jekyll/favicon/static_file/referenceable.yml +15 -0
  23. data/config/jekyll/favicon/static_file/sourceable.yml +3 -0
  24. data/config/jekyll/favicon/static_file/taggable.yml +22 -0
  25. data/jekyll-favicon.gemspec +24 -24
  26. data/lib/jekyll-favicon.rb +7 -16
  27. data/lib/jekyll/favicon.rb +19 -16
  28. data/lib/jekyll/favicon/configuration.rb +73 -0
  29. data/lib/jekyll/favicon/configuration/defaults.rb +49 -0
  30. data/lib/jekyll/favicon/generator.rb +10 -84
  31. data/lib/jekyll/favicon/hooks.rb +12 -10
  32. data/lib/jekyll/favicon/static_data_file.rb +17 -0
  33. data/lib/jekyll/favicon/static_file.rb +97 -0
  34. data/lib/jekyll/favicon/static_file/convertible.rb +129 -0
  35. data/lib/jekyll/favicon/static_file/mutable.rb +81 -0
  36. data/lib/jekyll/favicon/static_file/referenceable.rb +22 -0
  37. data/lib/jekyll/favicon/static_file/sourceable.rb +73 -0
  38. data/lib/jekyll/favicon/static_file/taggable.rb +53 -0
  39. data/lib/jekyll/favicon/static_graphic_file.rb +21 -0
  40. data/lib/jekyll/favicon/tag.rb +14 -17
  41. data/lib/jekyll/favicon/utils.rb +48 -0
  42. data/lib/jekyll/favicon/utils/configuration/compact.rb +58 -0
  43. data/lib/jekyll/favicon/utils/configuration/merge.rb +70 -0
  44. data/lib/jekyll/favicon/utils/configuration/patch.rb +49 -0
  45. data/lib/jekyll/favicon/utils/convert.rb +39 -0
  46. data/lib/jekyll/favicon/utils/tag.rb +70 -0
  47. data/lib/jekyll/favicon/version.rb +3 -1
  48. metadata +67 -71
  49. data/.rubocop.yml +0 -5
  50. data/.ruby-version +0 -1
  51. data/.travis.yml +0 -21
  52. data/Gemfile.lock +0 -97
  53. data/lib/browserconfig.rb +0 -54
  54. data/lib/hash.rb +0 -12
  55. data/lib/image.rb +0 -33
  56. data/lib/jekyll/favicon/config/defaults.yml +0 -55
  57. data/lib/jekyll/favicon/icon.rb +0 -73
  58. data/lib/jekyll/favicon/metadata.rb +0 -12
  59. data/lib/jekyll/favicon/templates/chrome.html.erb +0 -6
  60. data/lib/jekyll/favicon/templates/classic.html.erb +0 -8
  61. data/lib/jekyll/favicon/templates/ie.html.erb +0 -4
  62. data/lib/jekyll/favicon/templates/safari.html.erb +0 -8
  63. data/lib/string.rb +0 -14
  64. data/lib/webmanifest.rb +0 -30
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "mini_magick"
4
+
5
+ module Jekyll
6
+ module Favicon
7
+ module Utils
8
+ # Favicon convert for include
9
+ module Convert
10
+ def self.included(klass)
11
+ klass.extend(ClassMethods)
12
+ end
13
+
14
+ def self.convert_apply(convert, options = {})
15
+ options.each_with_object(convert) do |(option, value), memo|
16
+ memo.send option.to_sym, value
17
+ end
18
+ end
19
+
20
+ def self.convert_options(convert, options = {})
21
+ priorities = %w[resize size]
22
+ convert_apply convert, options.slice(*priorities)
23
+ common_options = options.reject { |key| priorities.include? key }
24
+ convert_apply convert, common_options
25
+ end
26
+
27
+ # Favicon convert utils functions
28
+ module ClassMethods
29
+ def convert(input, output, options = {})
30
+ MiniMagick::Tool::Convert.new do |convert|
31
+ convert.flatten
32
+ Convert.convert_options(convert, options) << input << output
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,70 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rexml/document"
4
+
5
+ module Jekyll
6
+ module Favicon
7
+ module Utils
8
+ # Favicon rexml for include
9
+ module Tag
10
+ def self.included(klass)
11
+ klass.extend(ClassMethods)
12
+ end
13
+
14
+ def self.mutate_find_or_create_element(parent, key)
15
+ parent.get_elements(key).first || parent.add_element(key)
16
+ end
17
+
18
+ def self.mutate_xml(parent, changes = {})
19
+ changes.each_with_object(parent) do |(key, value), memo|
20
+ mutate_iterator key, value, memo
21
+ end
22
+ end
23
+
24
+ def self.mutate_iterator(key, value, memo)
25
+ if key.start_with? "__" then memo.text = value
26
+ elsif key.start_with? "_" then memo.add_attribute key[1..], value
27
+ else Tag.mutate_xml Tag.mutate_find_or_create_element(memo, key), value
28
+ end
29
+ end
30
+
31
+ def self.build_xml(name, parent = nil, config = {})
32
+ element = REXML::Element.new name, parent
33
+ return Tag.populate_element element, config if config.is_a? Enumerable
34
+
35
+ element.text = config and return element
36
+ end
37
+
38
+ def self.populate_element(element, config)
39
+ config.each_with_object(element) do |(key, value), memo|
40
+ populate_iterator key, value, memo
41
+ end
42
+ end
43
+
44
+ def self.populate_iterator(key, value, memo)
45
+ if key.start_with? "__" then memo.text = value
46
+ elsif (child_key = key.match(/^_(.*)$/))
47
+ memo.add_attribute child_key[1], value
48
+ else build_xml key, memo, value
49
+ end
50
+ end
51
+
52
+ # Favicon rexml utils functions
53
+ module ClassMethods
54
+ def mutate_element(parent, changes = {})
55
+ Tag.mutate_xml parent, changes
56
+ end
57
+
58
+ def build_element(name, parent = nil, config = {})
59
+ Tag.build_xml name, parent, config
60
+ end
61
+
62
+ def build_tag(name, attributes = {})
63
+ config = attributes.transform_keys { |key| "_#{key}" }
64
+ Tag.build_xml name, nil, config
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Jekyll
2
4
  module Favicon
3
- VERSION = '0.2.9'.freeze
5
+ VERSION = "1.0.0"
4
6
  end
5
7
  end
metadata CHANGED
@@ -1,111 +1,71 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-favicon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.9
4
+ version: 1.0.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: 2021-02-10 00:00:00.000000000 Z
11
+ date: 2021-08-13 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: bundler
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '1.17'
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '1.17'
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: minitest
29
15
  requirement: !ruby/object:Gem::Requirement
30
16
  requirements:
31
17
  - - "~>"
32
18
  - !ruby/object:Gem::Version
33
- version: '5.0'
19
+ version: '5.8'
34
20
  type: :development
35
21
  prerelease: false
36
22
  version_requirements: !ruby/object:Gem::Requirement
37
23
  requirements:
38
24
  - - "~>"
39
25
  - !ruby/object:Gem::Version
40
- version: '5.0'
26
+ version: '5.8'
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: minitest-hooks
43
29
  requirement: !ruby/object:Gem::Requirement
44
30
  requirements:
45
31
  - - "~>"
46
32
  - !ruby/object:Gem::Version
47
- version: '1.4'
48
- - - ">="
49
- - !ruby/object:Gem::Version
50
- version: 1.4.2
33
+ version: '1.5'
51
34
  type: :development
52
35
  prerelease: false
53
36
  version_requirements: !ruby/object:Gem::Requirement
54
37
  requirements:
55
38
  - - "~>"
56
39
  - !ruby/object:Gem::Version
57
- version: '1.4'
58
- - - ">="
59
- - !ruby/object:Gem::Version
60
- version: 1.4.2
40
+ version: '1.5'
61
41
  - !ruby/object:Gem::Dependency
62
- name: nokogiri
42
+ name: minitest-reporters
63
43
  requirement: !ruby/object:Gem::Requirement
64
44
  requirements:
65
45
  - - "~>"
66
46
  - !ruby/object:Gem::Version
67
- version: '1.8'
47
+ version: 1.4.3
68
48
  type: :development
69
49
  prerelease: false
70
50
  version_requirements: !ruby/object:Gem::Requirement
71
51
  requirements:
72
52
  - - "~>"
73
53
  - !ruby/object:Gem::Version
74
- version: '1.8'
54
+ version: 1.4.3
75
55
  - !ruby/object:Gem::Dependency
76
56
  name: rake
77
57
  requirement: !ruby/object:Gem::Requirement
78
58
  requirements:
79
59
  - - "~>"
80
60
  - !ruby/object:Gem::Version
81
- version: '10.0'
61
+ version: '12.3'
82
62
  type: :development
83
63
  prerelease: false
84
64
  version_requirements: !ruby/object:Gem::Requirement
85
65
  requirements:
86
66
  - - "~>"
87
67
  - !ruby/object:Gem::Version
88
- version: '10.0'
89
- - !ruby/object:Gem::Dependency
90
- name: rubocop
91
- requirement: !ruby/object:Gem::Requirement
92
- requirements:
93
- - - ">="
94
- - !ruby/object:Gem::Version
95
- version: 0.54.0
96
- - - "~>"
97
- - !ruby/object:Gem::Version
98
- version: 0.54.0
99
- type: :development
100
- prerelease: false
101
- version_requirements: !ruby/object:Gem::Requirement
102
- requirements:
103
- - - ">="
104
- - !ruby/object:Gem::Version
105
- version: 0.54.0
106
- - - "~>"
107
- - !ruby/object:Gem::Version
108
- version: 0.54.0
68
+ version: '12.3'
109
69
  - !ruby/object:Gem::Dependency
110
70
  name: jekyll
111
71
  requirement: !ruby/object:Gem::Requirement
@@ -130,16 +90,36 @@ dependencies:
130
90
  name: mini_magick
131
91
  requirement: !ruby/object:Gem::Requirement
132
92
  requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '4.11'
96
+ type: :runtime
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: '4.11'
103
+ - !ruby/object:Gem::Dependency
104
+ name: rexml
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: '3.2'
133
110
  - - ">="
134
111
  - !ruby/object:Gem::Version
135
- version: 4.9.4
112
+ version: 3.2.5
136
113
  type: :runtime
137
114
  prerelease: false
138
115
  version_requirements: !ruby/object:Gem::Requirement
139
116
  requirements:
117
+ - - "~>"
118
+ - !ruby/object:Gem::Version
119
+ version: '3.2'
140
120
  - - ">="
141
121
  - !ruby/object:Gem::Version
142
- version: 4.9.4
122
+ version: 3.2.5
143
123
  description: Jekyll-favicon is a jekyll plugin that adds the tag favicon, generating
144
124
  html tags for favicon.
145
125
  email:
@@ -148,43 +128,58 @@ executables: []
148
128
  extensions: []
149
129
  extra_rdoc_files: []
150
130
  files:
131
+ - ".devcontainer/Dockerfile"
132
+ - ".devcontainer/devcontainer.json"
151
133
  - ".github/ISSUE_TEMPLATE/bug_report.md"
152
134
  - ".github/ISSUE_TEMPLATE/feature_request.md"
153
135
  - ".github/PULL_REQUEST_TEMPLATE.md"
154
136
  - ".github/workflows/gem-push.yml"
137
+ - ".github/workflows/test.yml"
155
138
  - ".gitignore"
156
- - ".rubocop.yml"
157
- - ".ruby-version"
158
- - ".travis.yml"
139
+ - ".reek.yml"
140
+ - ".vscode/launch.json"
141
+ - ".vscode/settings.json"
142
+ - ".vscode/tasks.json"
159
143
  - CHANGELOG.md
160
144
  - CODE_OF_CONDUCT.md
161
145
  - CONTRIBUTING.md
162
146
  - Gemfile
163
- - Gemfile.lock
164
147
  - LICENSE.txt
165
148
  - README.md
166
149
  - Rakefile
167
150
  - bin/console
151
+ - bin/debug
168
152
  - bin/setup
153
+ - config/jekyll/favicon.yml
154
+ - config/jekyll/favicon/static_file.yml
155
+ - config/jekyll/favicon/static_file/convertible.yml
156
+ - config/jekyll/favicon/static_file/mutable.yml
157
+ - config/jekyll/favicon/static_file/referenceable.yml
158
+ - config/jekyll/favicon/static_file/sourceable.yml
159
+ - config/jekyll/favicon/static_file/taggable.yml
169
160
  - jekyll-favicon.gemspec
170
- - lib/browserconfig.rb
171
- - lib/hash.rb
172
- - lib/image.rb
173
161
  - lib/jekyll-favicon.rb
174
162
  - lib/jekyll/favicon.rb
175
- - lib/jekyll/favicon/config/defaults.yml
163
+ - lib/jekyll/favicon/configuration.rb
164
+ - lib/jekyll/favicon/configuration/defaults.rb
176
165
  - lib/jekyll/favicon/generator.rb
177
166
  - lib/jekyll/favicon/hooks.rb
178
- - lib/jekyll/favicon/icon.rb
179
- - lib/jekyll/favicon/metadata.rb
167
+ - lib/jekyll/favicon/static_data_file.rb
168
+ - lib/jekyll/favicon/static_file.rb
169
+ - lib/jekyll/favicon/static_file/convertible.rb
170
+ - lib/jekyll/favicon/static_file/mutable.rb
171
+ - lib/jekyll/favicon/static_file/referenceable.rb
172
+ - lib/jekyll/favicon/static_file/sourceable.rb
173
+ - lib/jekyll/favicon/static_file/taggable.rb
174
+ - lib/jekyll/favicon/static_graphic_file.rb
180
175
  - lib/jekyll/favicon/tag.rb
181
- - lib/jekyll/favicon/templates/chrome.html.erb
182
- - lib/jekyll/favicon/templates/classic.html.erb
183
- - lib/jekyll/favicon/templates/ie.html.erb
184
- - lib/jekyll/favicon/templates/safari.html.erb
176
+ - lib/jekyll/favicon/utils.rb
177
+ - lib/jekyll/favicon/utils/configuration/compact.rb
178
+ - lib/jekyll/favicon/utils/configuration/merge.rb
179
+ - lib/jekyll/favicon/utils/configuration/patch.rb
180
+ - lib/jekyll/favicon/utils/convert.rb
181
+ - lib/jekyll/favicon/utils/tag.rb
185
182
  - lib/jekyll/favicon/version.rb
186
- - lib/string.rb
187
- - lib/webmanifest.rb
188
183
  homepage: https://github.com/afaundez/jekyll-favicon
189
184
  licenses:
190
185
  - MIT
@@ -197,14 +192,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
197
192
  requirements:
198
193
  - - ">="
199
194
  - !ruby/object:Gem::Version
200
- version: 2.1.0
195
+ version: 2.5.0
201
196
  required_rubygems_version: !ruby/object:Gem::Requirement
202
197
  requirements:
203
198
  - - ">="
204
199
  - !ruby/object:Gem::Version
205
200
  version: '0'
206
201
  requirements: []
207
- rubygems_version: 3.0.3
202
+ rubyforge_project:
203
+ rubygems_version: 2.7.6.3
208
204
  signing_key:
209
205
  specification_version: 4
210
206
  summary: Jekyll plugin for favicon tag generation.
data/.rubocop.yml DELETED
@@ -1,5 +0,0 @@
1
- Metrics/BlockLength:
2
- Exclude:
3
- - Rakefile
4
- - '**/*.rake'
5
- - test/**/*.rb
data/.ruby-version DELETED
@@ -1 +0,0 @@
1
- 2.1.0
data/.travis.yml DELETED
@@ -1,21 +0,0 @@
1
- sudo: false
2
- language: ruby
3
- rvm:
4
- - 2.6.4
5
- - 2.5.6
6
- - 2.4.7
7
- - 2.3.8
8
- - 2.2.10
9
- - 2.1.10
10
- - 2.1.0
11
- before_install:
12
- - if ! [[ `ruby -v | cut -d' ' -f2` > "2.3" ]]; then gem install bundler -v '< 2'; fi;
13
- addons:
14
- apt:
15
- config:
16
- retries: true
17
- packages:
18
- - imagemagick
19
- - libmagickcore-dev
20
- - libmagickwand-dev
21
- - graphicsmagick
data/Gemfile.lock DELETED
@@ -1,97 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- jekyll-favicon (0.2.9)
5
- jekyll (>= 3.0, < 5.0)
6
- mini_magick (>= 4.9.4)
7
-
8
- GEM
9
- remote: https://rubygems.org/
10
- specs:
11
- addressable (2.7.0)
12
- public_suffix (>= 2.0.2, < 5.0)
13
- ast (2.4.0)
14
- colorator (1.1.0)
15
- concurrent-ruby (1.1.8)
16
- em-websocket (0.5.2)
17
- eventmachine (>= 0.12.9)
18
- http_parser.rb (~> 0.6.0)
19
- eventmachine (1.2.7)
20
- ffi (1.12.2)
21
- forwardable-extended (2.6.0)
22
- http_parser.rb (0.6.0)
23
- i18n (0.9.5)
24
- concurrent-ruby (~> 1.0)
25
- jekyll (3.9.0)
26
- addressable (~> 2.4)
27
- colorator (~> 1.0)
28
- em-websocket (~> 0.5)
29
- i18n (~> 0.7)
30
- jekyll-sass-converter (~> 1.0)
31
- jekyll-watch (~> 2.0)
32
- kramdown (>= 1.17, < 3)
33
- liquid (~> 4.0)
34
- mercenary (~> 0.3.3)
35
- pathutil (~> 0.9)
36
- rouge (>= 1.7, < 4)
37
- safe_yaml (~> 1.0)
38
- jekyll-sass-converter (1.5.2)
39
- sass (~> 3.4)
40
- jekyll-watch (2.0.0)
41
- listen (~> 3.0)
42
- kramdown (1.17.0)
43
- liquid (4.0.3)
44
- listen (3.0.8)
45
- rb-fsevent (~> 0.9, >= 0.9.4)
46
- rb-inotify (~> 0.9, >= 0.9.7)
47
- mercenary (0.3.6)
48
- mini_magick (4.11.0)
49
- mini_portile2 (2.4.0)
50
- minitest (5.11.3)
51
- minitest-hooks (1.5.0)
52
- minitest (> 5.3)
53
- nokogiri (1.9.1)
54
- mini_portile2 (~> 2.4.0)
55
- parallel (1.13.0)
56
- parser (2.6.4.0)
57
- ast (~> 2.4.0)
58
- pathutil (0.16.2)
59
- forwardable-extended (~> 2.6)
60
- powerpack (0.1.2)
61
- public_suffix (3.1.1)
62
- rainbow (3.0.0)
63
- rake (10.5.0)
64
- rb-fsevent (0.10.4)
65
- rb-inotify (0.9.10)
66
- ffi (>= 0.5.0, < 2)
67
- rouge (3.26.0)
68
- rubocop (0.54.0)
69
- parallel (~> 1.10)
70
- parser (>= 2.5)
71
- powerpack (~> 0.1)
72
- rainbow (>= 2.2.2, < 4.0)
73
- ruby-progressbar (~> 1.7)
74
- unicode-display_width (~> 1.0, >= 1.0.1)
75
- ruby-progressbar (1.10.1)
76
- safe_yaml (1.0.5)
77
- sass (3.7.4)
78
- sass-listen (~> 4.0.0)
79
- sass-listen (4.0.0)
80
- rb-fsevent (~> 0.9, >= 0.9.4)
81
- rb-inotify (~> 0.9, >= 0.9.7)
82
- unicode-display_width (1.6.0)
83
-
84
- PLATFORMS
85
- ruby
86
-
87
- DEPENDENCIES
88
- bundler (~> 1.17)
89
- jekyll-favicon!
90
- minitest (~> 5.0)
91
- minitest-hooks (~> 1.4, >= 1.4.2)
92
- nokogiri (~> 1.8)
93
- rake (~> 10.0)
94
- rubocop (~> 0.54.0, >= 0.54.0)
95
-
96
- BUNDLED WITH
97
- 1.17.3