34 lines
		
	
	
		
			776 B
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			776 B
		
	
	
	
		
			Ruby
		
	
	
	
# frozen_string_literal: true
 | 
						|
 | 
						|
module Gitlab
 | 
						|
  module LanguageData
 | 
						|
    EXTENSION_MUTEX = Mutex.new
 | 
						|
 | 
						|
    class << self
 | 
						|
      include Gitlab::Utils::StrongMemoize
 | 
						|
 | 
						|
      def extensions
 | 
						|
        EXTENSION_MUTEX.synchronize do
 | 
						|
          strong_memoize(:extensions) do
 | 
						|
            Set.new.tap do |set|
 | 
						|
              YAML.load_file(Rails.root.join('vendor', 'languages.yml')).each do |_name, details|
 | 
						|
                details['extensions']&.each do |ext|
 | 
						|
                  next unless ext.start_with?('.')
 | 
						|
 | 
						|
                  set << ext.downcase
 | 
						|
                end
 | 
						|
              end
 | 
						|
            end
 | 
						|
          end
 | 
						|
        end
 | 
						|
      end
 | 
						|
 | 
						|
      def clear_extensions!
 | 
						|
        EXTENSION_MUTEX.synchronize do
 | 
						|
          clear_memoization(:extensions)
 | 
						|
        end
 | 
						|
      end
 | 
						|
    end
 | 
						|
  end
 | 
						|
end
 |