Sha256: 49fad78f65480221635384d086645549f180267f937fcd53e5cf762d1bc790ac

Contents?: true

Size: 1.43 KB

Versions: 3

Compression:

Stored size: 1.43 KB

Contents

# frozen_string_literal: true

module Jekyll
  module Favicon
    module Utils
      module Configuration
        # Favicon configuration patch logic
        module Patch
          def self.included(klass)
            klass.extend(ClassMethods)
          end

          def self.patch_unknown(value_or_values, &block)
            patch_method = case value_or_values
                           when Array then :patch_array
                           when Hash then :patch_hash
                           when Symbol, String then :patch_value
                           else return value_or_values
            end
            send patch_method, value_or_values, &block
          end

          def self.patch_array(values, &block)
            values.collect { |value| patch_unknown value, &block }
          end

          def self.patch_hash(values, &block)
            values.transform_values { |value| patch_unknown value, &block }
          end

          def self.patch_value(value, &block)
            block.call patch_value_string_symbol(value)
          end

          def self.patch_value_string_symbol(value)
            value.to_s.start_with?(":") ? value[1..].to_sym : value
          end

          # Patch configuration with the block provided
          module ClassMethods
            def patch(value_or_values, &block)
              Patch.patch_unknown value_or_values, &block
            end
          end
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
jekyll-favicon-1.0.0 lib/jekyll/favicon/utils/configuration/patch.rb
jekyll-favicon-1.0.0.pre.3 lib/jekyll/favicon/utils/configuration/patch.rb
jekyll-favicon-1.0.0.pre.2 lib/jekyll/favicon/utils/configuration/patch.rb