# File lib/hiera/interpolate.rb, line 9
    def interpolate(data, scope, extra_data)
      if data.is_a?(String)
        # Wrapping do_interpolation in a gsub block ensures we process
        # each interpolation site in isolation using separate recursion guards.
        data.gsub(INTERPOLATION) do |match|
          do_interpolation(match, Hiera::RecursiveGuard.new, scope, extra_data)
        end
      else
        data
      end
    end