mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	 4c32fcb84f
			
		
	
	
		4c32fcb84f
		
	
	
	
	
		
			
			Now the formatter configuration is per Ractor. DefaultFormatter is used
if not set.
DefaultFormatter#message_for is now a class method to allow sub-Ractors
to call the method.
9fbaa8ab7c
		
	
			
		
			
				
	
	
		
			23 lines
		
	
	
	
		
			638 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			23 lines
		
	
	
	
		
			638 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| module ErrorHighlight
 | |
|   class DefaultFormatter
 | |
|     def self.message_for(spot)
 | |
|       # currently only a one-line code snippet is supported
 | |
|       if spot[:first_lineno] == spot[:last_lineno]
 | |
|         indent = spot[:snippet][0...spot[:first_column]].gsub(/[^\t]/, " ")
 | |
|         marker = indent + "^" * (spot[:last_column] - spot[:first_column])
 | |
| 
 | |
|         "\n\n#{ spot[:snippet] }#{ marker }"
 | |
|       else
 | |
|         ""
 | |
|       end
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   def self.formatter
 | |
|     Ractor.current[:__error_highlight_formatter__] || DefaultFormatter
 | |
|   end
 | |
| 
 | |
|   def self.formatter=(formatter)
 | |
|     Ractor.current[:__error_highlight_formatter__] = formatter
 | |
|   end
 | |
| end
 |