jekyll-favicon 1.0.0.pre.1 → 1.0.0.pre.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/.devcontainer/Dockerfile +1 -1
  3. data/.devcontainer/devcontainer.json +11 -4
  4. data/.github/workflows/test.yml +5 -5
  5. data/.gitignore +1 -2
  6. data/.reek.yml +25 -0
  7. data/.vscode/launch.json +16 -0
  8. data/.vscode/settings.json +7 -0
  9. data/.vscode/tasks.json +15 -0
  10. data/CHANGELOG.md +4 -0
  11. data/Gemfile +1 -1
  12. data/README.md +3 -3
  13. data/Rakefile +4 -4
  14. data/bin/debug +22 -0
  15. data/jekyll-favicon.gemspec +23 -23
  16. data/lib/jekyll-favicon.rb +5 -7
  17. data/lib/jekyll/favicon.rb +13 -16
  18. data/lib/jekyll/favicon/configuration.rb +11 -11
  19. data/lib/jekyll/favicon/configuration/defaults.rb +6 -6
  20. data/lib/jekyll/favicon/generator.rb +5 -6
  21. data/lib/jekyll/favicon/hooks.rb +4 -4
  22. data/lib/jekyll/favicon/static_data_file.rb +2 -2
  23. data/lib/jekyll/favicon/static_file.rb +18 -18
  24. data/lib/jekyll/favicon/static_file/convertible.rb +30 -27
  25. data/lib/jekyll/favicon/static_file/mutable.rb +16 -16
  26. data/lib/jekyll/favicon/static_file/referenceable.rb +2 -2
  27. data/lib/jekyll/favicon/static_file/sourceable.rb +7 -7
  28. data/lib/jekyll/favicon/static_file/taggable.rb +8 -14
  29. data/lib/jekyll/favicon/static_graphic_file.rb +2 -2
  30. data/lib/jekyll/favicon/tag.rb +9 -10
  31. data/lib/jekyll/favicon/utils.rb +24 -5
  32. data/lib/jekyll/favicon/utils/configuration/compact.rb +29 -32
  33. data/lib/jekyll/favicon/utils/configuration/merge.rb +41 -34
  34. data/lib/jekyll/favicon/utils/configuration/patch.rb +24 -23
  35. data/lib/jekyll/favicon/utils/convert.rb +15 -18
  36. data/lib/jekyll/favicon/utils/tag.rb +44 -28
  37. data/lib/jekyll/favicon/version.rb +1 -1
  38. metadata +7 -9
  39. data/gemfiles/jekyll36.gemfile +0 -6
  40. data/gemfiles/jekyll37.gemfile +0 -6
  41. data/gemfiles/jekyll38.gemfile +0 -6
  42. data/gemfiles/jekyll39.gemfile +0 -6
  43. data/gemfiles/jekyll40.gemfile +0 -6
  44. data/gemfiles/jekyll41.gemfile +0 -6
  45. data/gemfiles/jekyll42.gemfile +0 -6
@@ -1,10 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'jekyll/favicon/utils/configuration/compact'
4
- require 'jekyll/favicon/utils/configuration/merge'
5
- require 'jekyll/favicon/utils/configuration/patch'
6
- require 'jekyll/favicon/utils/convert'
7
- require 'jekyll/favicon/utils/tag'
3
+ require "jekyll/favicon/utils/configuration/compact"
4
+ require "jekyll/favicon/utils/configuration/merge"
5
+ require "jekyll/favicon/utils/configuration/patch"
6
+ require "jekyll/favicon/utils/convert"
7
+ require "jekyll/favicon/utils/tag"
8
8
 
9
9
  module Jekyll
10
10
  module Favicon
@@ -19,6 +19,25 @@ module Jekyll
19
19
  def self.except(hash, *keys)
20
20
  hash.reject { |key, _| keys.include? key }
21
21
  end
22
+
23
+ def self.define_to_size(define)
24
+ return unless define
25
+
26
+ define.split("=")
27
+ .last
28
+ .split(",")
29
+ .collect { |size| [size, size].join "x" }
30
+ end
31
+
32
+ def self.name_to_size(name)
33
+ size_in_name_regex = /^.*-(\d+x\d+)\..*$/
34
+ name.match size_in_name_regex
35
+ end
36
+
37
+ def self.slice_and_compact(hash, keys)
38
+ compactable = hash.slice(*keys)
39
+ Utils.compact compactable
40
+ end
22
41
  end
23
42
  end
24
43
  end
@@ -10,48 +10,45 @@ module Jekyll
10
10
  klass.extend(ClassMethods)
11
11
  end
12
12
 
13
- # Nil and empty remove from configurations
14
- module ClassMethods
15
- def compact(compactable)
16
- case compactable
17
- when Hash, Array
18
- compact_deep(compactable) || compactable.class[]
19
- else
20
- compactable
21
- end
13
+ def self.compact_deep(compactable)
14
+ case compactable
15
+ when Hash then compact_hash compactable
16
+ when Array then compact_array compactable
17
+ else compactable
22
18
  end
19
+ end
23
20
 
24
- private
21
+ def self.compact_hash(hash)
22
+ compacted_hash = hash.each_with_object({}) do |(key, value), memo|
23
+ next unless (compacted = compact_deep(value))
25
24
 
26
- def compact_deep(compactable)
27
- case compactable
28
- when Hash then compact_hash compactable
29
- when Array then compact_array compactable
30
- else compactable
31
- end
25
+ memo[key] = compacted
32
26
  end
27
+ compact_shallow compacted_hash
28
+ end
33
29
 
34
- def compact_hash(hash)
35
- compacted_hash = hash.each_with_object({}) do |(key, value), memo|
36
- next unless (compacted = compact_deep(value))
30
+ def self.compact_array(array)
31
+ compacted_array = array.each_with_object([]) do |value, memo|
32
+ next unless (compacted = compact_deep(value))
37
33
 
38
- memo[key] = compacted
39
- end
40
- compact_shallow compacted_hash
34
+ memo << compacted
41
35
  end
36
+ compact_shallow compacted_array
37
+ end
42
38
 
43
- def compact_array(array)
44
- compacted_array = array.each_with_object([]) do |value, memo|
45
- next unless (compacted = compact_deep(value))
39
+ def self.compact_shallow(compactable)
40
+ compactable.empty? ? nil : compactable.compact
41
+ end
46
42
 
47
- memo << compacted
43
+ # Nil and empty remove from configurations
44
+ module ClassMethods
45
+ def compact(compactable)
46
+ case compactable
47
+ when Hash, Array
48
+ Compact.compact_deep(compactable) || compactable.class[]
49
+ else
50
+ compactable
48
51
  end
49
- compact_shallow compacted_array
50
- end
51
-
52
- # :reek:UtilityFunction
53
- def compact_shallow(compactable)
54
- compactable.empty? ? nil : compactable.compact
55
52
  end
56
53
  end
57
54
  end
@@ -10,50 +10,57 @@ module Jekyll
10
10
  klass.extend(ClassMethods)
11
11
  end
12
12
 
13
- # Merge configurations
14
- module ClassMethods
15
- def merge(left = nil, *right_and_or_rest)
16
- return left if right_and_or_rest.empty?
13
+ def self.merge_multiple(left = nil, *right_and_or_rest)
14
+ return left if right_and_or_rest.empty?
17
15
 
18
- right, *rest = right_and_or_rest
19
- merged = merge_pair left, right
20
- return merged if rest.empty?
16
+ right, *rest = right_and_or_rest
17
+ merged = merge_pair left, right
18
+ return merged if rest.empty?
21
19
 
22
- merge(merged, *rest)
23
- end
24
-
25
- private
20
+ merge_multiple(merged, *rest)
21
+ end
26
22
 
27
- def merge_pair(left, right)
28
- return right if !left || !right || !left.instance_of?(right.class)
23
+ def self.merge_pair(left, right)
24
+ return right if !left || !right || !left.instance_of?(right.class)
29
25
 
30
- case right
31
- when Hash then merge_pair_hash left, right
32
- when Array then merge_pair_array left, right
33
- else right
34
- end
26
+ case right
27
+ when Hash then merge_pair_hash left, right
28
+ when Array then merge_pair_array left, right
29
+ else right
35
30
  end
31
+ end
36
32
 
37
- def merge_pair_hash(left_hash, right_hash)
38
- left_hash.merge(right_hash) do |_, left_value, right_value|
39
- merge left_value, right_value
40
- end
33
+ def self.merge_pair_hash(left_hash, right_hash)
34
+ left_hash.merge(right_hash) do |_, left_value, right_value|
35
+ merge_multiple left_value, right_value
41
36
  end
37
+ end
42
38
 
43
- def merge_pair_array(left_array, right_array)
44
- joint_array = left_array + right_array
45
- joint_array.group_by { |map| merge_group map }
46
- .collect { |group, values| merge_collect group, values }
47
- .flatten
48
- end
39
+ def self.merge_pair_array(left_array, right_array)
40
+ joint_array = left_array + right_array
41
+ joint_array.group_by { |map| merge_group map }
42
+ .collect { |group, values| merge_collect group, values }
43
+ .flatten
44
+ end
49
45
 
50
- # :reek:UtilityFunction
51
- def merge_group(map, keys = %w[name dir])
52
- map.is_a?(Hash) ? map.values_at(*keys) : []
53
- end
46
+ def self.merge_group(map, keys = %w[name dir])
47
+ map.is_a?(Hash) ? map.values_at(*keys) : []
48
+ end
49
+
50
+ def self.merge_collect(group, values)
51
+ group.first ? merge_multiple(*values) : values
52
+ end
53
+
54
+ # Merge configurations
55
+ module ClassMethods
56
+ def merge(left = nil, *right_and_or_rest)
57
+ return left if right_and_or_rest.empty?
58
+
59
+ right, *rest = right_and_or_rest
60
+ merged = Merge.merge_pair left, right
61
+ return merged if rest.empty?
54
62
 
55
- def merge_collect(group, values)
56
- group.first ? merge(*values) : values
63
+ Merge.merge_multiple(merged, *rest)
57
64
  end
58
65
  end
59
66
  end
@@ -10,35 +10,36 @@ module Jekyll
10
10
  klass.extend(ClassMethods)
11
11
  end
12
12
 
13
- # Patch configuration with the block provided
14
- module ClassMethods
15
- def patch(value_or_values, &block)
16
- patch_method = case value_or_values
17
- when Array then :patch_array
18
- when Hash then :patch_hash
19
- when Symbol, String then :patch_value
20
- else return value_or_values
21
- end
22
- send patch_method, value_or_values, &block
13
+ def self.patch_unknown(value_or_values, &block)
14
+ patch_method = case value_or_values
15
+ when Array then :patch_array
16
+ when Hash then :patch_hash
17
+ when Symbol, String then :patch_value
18
+ else return value_or_values
23
19
  end
20
+ send patch_method, value_or_values, &block
21
+ end
24
22
 
25
- private
23
+ def self.patch_array(values, &block)
24
+ values.collect { |value| patch_unknown value, &block }
25
+ end
26
26
 
27
- def patch_array(values, &block)
28
- values.collect { |value| patch value, &block }
29
- end
27
+ def self.patch_hash(values, &block)
28
+ values.transform_values { |value| patch_unknown value, &block }
29
+ end
30
30
 
31
- def patch_hash(values, &block)
32
- values.transform_values { |value| patch value, &block }
33
- end
31
+ def self.patch_value(value, &block)
32
+ block.call patch_value_string_symbol(value)
33
+ end
34
34
 
35
- def patch_value(value, &block)
36
- block.call patch_value_string_symbol(value)
37
- end
35
+ def self.patch_value_string_symbol(value)
36
+ value.to_s.start_with?(":") ? value[1..].to_sym : value
37
+ end
38
38
 
39
- # :reek:UtilityFunction
40
- def patch_value_string_symbol(value)
41
- value.to_s.start_with?(':') ? value[1..-1].to_sym : value
39
+ # Patch configuration with the block provided
40
+ module ClassMethods
41
+ def patch(value_or_values, &block)
42
+ Patch.patch_unknown value_or_values, &block
42
43
  end
43
44
  end
44
45
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'mini_magick'
3
+ require "mini_magick"
4
4
 
5
5
  module Jekyll
6
6
  module Favicon
@@ -11,28 +11,25 @@ module Jekyll
11
11
  klass.extend(ClassMethods)
12
12
  end
13
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 scale]
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
+
14
27
  # Favicon convert utils functions
15
28
  module ClassMethods
16
29
  def convert(input, output, options = {})
17
30
  MiniMagick::Tool::Convert.new do |convert|
18
31
  convert.flatten
19
- convert_options(convert, options) << input << output
20
- end
21
- end
22
-
23
- private
24
-
25
- def convert_options(convert, options = {})
26
- priorities = %w[resize scale]
27
- convert_apply convert, options.slice(*priorities)
28
- common_options = options.reject { |key| priorities.include? key }
29
- convert_apply convert, common_options
30
- end
31
-
32
- # :reek:UtilityFunction
33
- def convert_apply(convert, options = {})
34
- options.each_with_object(convert) do |(option, value), memo|
35
- memo.send option.to_sym, value
32
+ Convert.convert_options(convert, options) << input << output
36
33
  end
37
34
  end
38
35
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'rexml/document'
3
+ require "rexml/document"
4
4
 
5
5
  module Jekyll
6
6
  module Favicon
@@ -11,41 +11,57 @@ module Jekyll
11
11
  klass.extend(ClassMethods)
12
12
  end
13
13
 
14
- # Favicon rexml utils functions
15
- module ClassMethods
16
- # :reek:FeatureEnvy
17
- def mutate_element(parent, changes = {})
18
- changes.each_with_object(parent) do |(key, value), memo|
19
- if key.start_with? '__' then memo.text = value
20
- elsif key.start_with? '_' then memo.add_attribute key[1..-1], value
21
- else mutate_element mutate_find_or_create_element(memo, key), value
22
- end
23
- end
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
24
21
  end
22
+ end
25
23
 
26
- def build_element(name, parent = nil, config = {})
27
- element = REXML::Element.new name, parent
28
- return populate_element element, config if config.is_a? Enumerable
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
29
30
 
30
- element.text = config and return element
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
31
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
32
51
 
33
- private
52
+ # Favicon rexml utils functions
53
+ module ClassMethods
54
+ def mutate_element(parent, changes = {})
55
+ Tag.mutate_xml parent, changes
56
+ end
34
57
 
35
- # :reek:UtilityFunction
36
- def mutate_find_or_create_element(parent, key)
37
- parent.get_elements(key).first || parent.add_element(key)
58
+ def build_element(name, parent = nil, config = {})
59
+ Tag.build_xml name, parent, config
38
60
  end
39
61
 
40
- # :reek:FeatureEnvy
41
- def populate_element(element, config)
42
- config.each_with_object(element) do |(key, value), memo|
43
- if key.start_with? '__' then memo.text = value
44
- elsif (child_key = key.match(/^_(.*)$/))
45
- memo.add_attribute child_key[1], value
46
- else build_element key, memo, value
47
- end
48
- end
62
+ def build_tag(name, attributes = {})
63
+ config = attributes.transform_keys { |key| "_#{key}" }
64
+ Tag.build_xml name, nil, config
49
65
  end
50
66
  end
51
67
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Jekyll
4
4
  module Favicon
5
- VERSION = '1.0.0-1'
5
+ VERSION = "1.0.0-2"
6
6
  end
7
7
  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: 1.0.0.pre.1
4
+ version: 1.0.0.pre.2
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-06-01 00:00:00.000000000 Z
11
+ date: 2021-06-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest
@@ -136,6 +136,10 @@ files:
136
136
  - ".github/workflows/gem-push.yml"
137
137
  - ".github/workflows/test.yml"
138
138
  - ".gitignore"
139
+ - ".reek.yml"
140
+ - ".vscode/launch.json"
141
+ - ".vscode/settings.json"
142
+ - ".vscode/tasks.json"
139
143
  - CHANGELOG.md
140
144
  - CODE_OF_CONDUCT.md
141
145
  - CONTRIBUTING.md
@@ -144,6 +148,7 @@ files:
144
148
  - README.md
145
149
  - Rakefile
146
150
  - bin/console
151
+ - bin/debug
147
152
  - bin/setup
148
153
  - config/jekyll/favicon.yml
149
154
  - config/jekyll/favicon/static_file.yml
@@ -152,13 +157,6 @@ files:
152
157
  - config/jekyll/favicon/static_file/referenceable.yml
153
158
  - config/jekyll/favicon/static_file/sourceable.yml
154
159
  - config/jekyll/favicon/static_file/taggable.yml
155
- - gemfiles/jekyll36.gemfile
156
- - gemfiles/jekyll37.gemfile
157
- - gemfiles/jekyll38.gemfile
158
- - gemfiles/jekyll39.gemfile
159
- - gemfiles/jekyll40.gemfile
160
- - gemfiles/jekyll41.gemfile
161
- - gemfiles/jekyll42.gemfile
162
160
  - jekyll-favicon.gemspec
163
161
  - lib/jekyll-favicon.rb
164
162
  - lib/jekyll/favicon.rb