31 lines
		
	
	
		
			1012 B
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			31 lines
		
	
	
		
			1012 B
		
	
	
	
		
			Ruby
		
	
	
	
| # frozen_string_literal: true
 | |
| 
 | |
| module API
 | |
|   module Helpers
 | |
|     ##
 | |
|     # This module makes it possible to use `app/presenters` with
 | |
|     # Grape Entities. It instantiates the model presenter and passes
 | |
|     # options defined in the API endpoint to the presenter itself.
 | |
|     #
 | |
|     #   present object, with: Entities::Something,
 | |
|     #                   current_user: current_user,
 | |
|     #                   another_option: 'my options'
 | |
|     #
 | |
|     # Example above will make `current_user` and `another_option`
 | |
|     # values available in the subclass of `Gitlab::View::Presenter`
 | |
|     # thorough a separate method in the presenter.
 | |
|     #
 | |
|     # The model class needs to have `::Presentable` module mixed in
 | |
|     # if you want to use `API::Helpers::Presentable`.
 | |
|     #
 | |
|     module Presentable
 | |
|       extend ActiveSupport::Concern
 | |
| 
 | |
|       def initialize(object, options = {})
 | |
|         options = options.opts_hash if options.is_a?(Grape::Entity::Options)
 | |
|         super(object.present(**options), options)
 | |
|       end
 | |
|     end
 | |
|   end
 | |
| end
 |