module Middleman::Svg::TransformPipeline::Transformations

Public Class Methods

all_transformations() click to toggle source
# File lib/middleman-svg/transform_pipeline/transformations.rb, line 35
def self.all_transformations
  in_priority_order(built_in_transformations)
end
built_in_transformations() click to toggle source

Transformations are run in priority order, lowest number first:

# File lib/middleman-svg/transform_pipeline/transformations.rb, line 3
def self.built_in_transformations
  {
    id: { transform: IdAttribute, priority: 1 },
    desc: { transform: Description, priority: 2 },
    title: { transform: Title, priority: 3 },
    aria: { transform: AriaAttributes },
    aria_hidden: { transform: AriaHiddenAttribute },
    class: { transform: ClassAttribute },
    style: { transform: StyleAttribute },
    data: { transform: DataAttributes },
    height: { transform: Height },
    nocomment: { transform: NoComment },
    no_defs: { transform: NoDefs },
    preserve_aspect_ratio: { transform: PreserveAspectRatio },
    size: { transform: Size },
    width: { transform: Width },
  }
end
in_priority_order(transforms) click to toggle source
# File lib/middleman-svg/transform_pipeline/transformations.rb, line 46
def self.in_priority_order(transforms)
  transforms.sort_by { |_, options| options.fetch(:priority, transforms.size) }
end
lookup(transform_params) click to toggle source
# File lib/middleman-svg/transform_pipeline/transformations.rb, line 39
def self.lookup(transform_params)
  all_transformations.map { |name, definition|
    value = params_with_defaults(transform_params)[name]
    definition.fetch(:transform, no_transform).create_with_value(value) if value
  }.compact
end
magnify(priority=0) click to toggle source
# File lib/middleman-svg/transform_pipeline/transformations.rb, line 31
def self.magnify(priority=0)
  (priority + 1) * built_in_transformations.size
end
magnify_priorities(transforms) click to toggle source
# File lib/middleman-svg/transform_pipeline/transformations.rb, line 22
def self.magnify_priorities(transforms)
  transforms.inject({}) do |output, (name, definition)|
    priority = definition.fetch(:priority, built_in_transformations.size)

    output[name] = definition.merge( { priority: magnify(priority) } )
    output
  end
end
no_transform() click to toggle source
# File lib/middleman-svg/transform_pipeline/transformations.rb, line 58
def self.no_transform
  Middleman::Svg::TransformPipeline::Transformations::NullTransformation
end
params_with_defaults(params) click to toggle source
# File lib/middleman-svg/transform_pipeline/transformations.rb, line 50
def self.params_with_defaults(params)
  without_empty_values(params)
end
without_empty_values(params) click to toggle source
# File lib/middleman-svg/transform_pipeline/transformations.rb, line 54
def self.without_empty_values(params)
  params.reject {|key, value| value.nil?}
end