# frozen_string_literal: true module Dry module Transformer # Transformation functions for Procs # # @example # require 'ostruct' # require 'dry/transformer/proc' # # include Dry::Transformer::Helper # # fn = t( # :map_value, # 'foo_bar', # t(:bind, OpenStruct.new(prefix: 'foo'), -> s { [prefix, s].join('_') }) # ) # # fn["foo_bar" => "bar"] # # => {"foo_bar" => "foo_bar"} # # @api public module ProcTransformations extend Registry # Change the binding for the given function # # @example # Dry::Transformer( # :bind, # OpenStruct.new(prefix: 'foo'), # -> s { [prefix, s].join('_') } # )['bar'] # # => "foo_bar" # # @param [Proc] # # @return [Proc] # # @api public def self.bind(value, binding, fn) binding.instance_exec(value, &fn) end end end end