Minor performance improvements and cleanup in formatter (#10765)
This commit is contained in:
		
					parent
					
						
							
								4ab094d35e
							
						
					
				
			
			
				commit
				
					
						c1c8c7b2c8
					
				
			
		
					 1 changed files with 5 additions and 14 deletions
				
			
		|  | @ -187,7 +187,7 @@ class Formatter | |||
|   end | ||||
| 
 | ||||
|   def rewrite(text, entities) | ||||
|     chars = text.to_s.to_char_a | ||||
|     text = text.to_s | ||||
| 
 | ||||
|     # Sort by start index | ||||
|     entities = entities.sort_by do |entity| | ||||
|  | @ -199,12 +199,12 @@ class Formatter | |||
| 
 | ||||
|     last_index = entities.reduce(0) do |index, entity| | ||||
|       indices = entity.respond_to?(:indices) ? entity.indices : entity[:indices] | ||||
|       result << encode(chars[index...indices.first].join) | ||||
|       result << encode(text[index...indices.first]) | ||||
|       result << yield(entity) | ||||
|       indices.last | ||||
|     end | ||||
| 
 | ||||
|     result << encode(chars[last_index..-1].join) | ||||
|     result << encode(text[last_index..-1]) | ||||
| 
 | ||||
|     result.flatten.join | ||||
|   end | ||||
|  | @ -231,23 +231,14 @@ class Formatter | |||
|     # Note: I couldn't obtain list_slug with @user/list-name format | ||||
|     # for mention so this requires additional check | ||||
|     special = Extractor.extract_urls_with_indices(escaped, options).map do |extract| | ||||
|       # exactly one of :url, :hashtag, :screen_name, :cashtag keys is present | ||||
|       key = (extract.keys & [:url, :hashtag, :screen_name, :cashtag]).first | ||||
| 
 | ||||
|       new_indices = [ | ||||
|         old_to_new_index.find_index(extract[:indices].first), | ||||
|         old_to_new_index.find_index(extract[:indices].last), | ||||
|       ] | ||||
| 
 | ||||
|       has_prefix_char = [:hashtag, :screen_name, :cashtag].include?(key) | ||||
|       value_indices = [ | ||||
|         new_indices.first + (has_prefix_char ? 1 : 0), # account for #, @ or $ | ||||
|         new_indices.last - 1, | ||||
|       ] | ||||
| 
 | ||||
|       next extract.merge( | ||||
|         :indices => new_indices, | ||||
|         key => text[value_indices.first..value_indices.last] | ||||
|         indices: new_indices, | ||||
|         url: text[new_indices.first..new_indices.last - 1] | ||||
|       ) | ||||
|     end | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue