Module: Imglab::Srcset::Utils

Extended by:
Utils
Included in:
Utils
Defined in:
lib/imglab/srcset/utils.rb

Constant Summary collapse

NORMALIZE_KEYS =
%w[dpr width].freeze
SPLIT_DPR_KEYS =
%w[dpr quality].freeze
SPLIT_WIDTH_KEYS =
%w[width height quality].freeze

Instance Method Summary collapse

Instance Method Details

#normalize_params(params) ⇒ Hash

Returns normalized params, rejecting values with keys included in normalized keys and with empty arrays.

Parameters:

  • params (Hash)

Returns:

  • (Hash)


14
15
16
17
18
# File 'lib/imglab/srcset/utils.rb', line 14

def normalize_params(params)
  params.inject({}) do |normalized_params, (key, value)|
    normalized_params.merge(normalize_param(key.to_s, value))
  end
end

#split_params_dpr(params) ⇒ Array

Returns an array with the parameters to use in different URLs for a srcset split by dpr parameter.

Parameters:

  • params (Hash)

Returns:

  • (Array)


24
25
26
27
28
29
30
31
32
33
# File 'lib/imglab/srcset/utils.rb', line 24

def split_params_dpr(params)
  split_values(params, SPLIT_DPR_KEYS, params.fetch("dpr").size).map do |dpr, quality|
    params.merge(
      {
        "dpr" => dpr,
        "quality" => quality
      }.delete_if { |key, _value| !params.key?(key) }
    )
  end
end

#split_params_width(params) ⇒ Array

Returns an array with the parameters to use in different URLs for a srcset split by width parameter.

Parameters:

  • params (Hash)

Returns:

  • (Array)


39
40
41
42
43
44
45
46
47
48
49
# File 'lib/imglab/srcset/utils.rb', line 39

def split_params_width(params)
  split_values(params, SPLIT_WIDTH_KEYS, split_size(params.fetch("width"))).map do |width, height, quality|
    params.merge(
      {
        "width" => width,
        "height" => height,
        "quality" => quality
      }.delete_if { |key, _value| !params.key?(key) }
    )
  end
end