32 lines
		
	
	
		
			974 B
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			974 B
		
	
	
	
		
			Ruby
		
	
	
	
| # frozen_string_literal: true
 | |
| 
 | |
| module Gitlab
 | |
|   # Parser/renderer for markups without other special support code.
 | |
|   module OtherMarkup
 | |
|     RENDER_TIMEOUT = 10.seconds
 | |
| 
 | |
|     # Public: Converts the provided markup into HTML.
 | |
|     #
 | |
|     # input         - the source text in a markup format
 | |
|     #
 | |
|     def self.render(file_name, input, context)
 | |
|       html = render_markup(file_name, input, context).force_encoding(input.encoding)
 | |
| 
 | |
|       context[:pipeline] ||= :markup
 | |
| 
 | |
|       html = Banzai.render(html, context)
 | |
|       html.html_safe
 | |
|     end
 | |
| 
 | |
|     def self.render_markup(file_name, input, context)
 | |
|       Gitlab::RenderTimeout.timeout(foreground: RENDER_TIMEOUT) { GitHub::Markup.render(file_name, input) }
 | |
|     rescue Timeout::Error => e
 | |
|       class_name = name.demodulize
 | |
|       Gitlab::ErrorTracking.track_exception(e, project_id: context[:project]&.id, class_name: class_name,
 | |
|         file_name: file_name)
 | |
| 
 | |
|       ActionController::Base.helpers.simple_format(input)
 | |
|     end
 | |
|   end
 | |
| end
 |