self.create

in lib/linguist/language.rb [36:78]


    def self.create(attributes = {})
      language = new(attributes)

      @languages << language

      
      if @name_index.key?(language.name)
        raise ArgumentError, "Duplicate language name: #{language.name}"
      end

      
      @index[language.name] = @name_index[language.name] = language

      language.aliases.each do |name|
        
        if @alias_index.key?(name)
          raise ArgumentError, "Duplicate alias: #{name}"
        end

        @index[name] = @alias_index[name] = language
      end

      language.extensions.each do |extension|
        if extension !~ /^\./
          raise ArgumentError, "Extension is missing a '.': #{extension.inspect}"
        end

        @extension_index[extension] << language
      end

      if @primary_extension_index.key?(language.primary_extension)
        raise ArgumentError, "Duplicate primary extension: #{language.primary_extension}"
      end

      @primary_extension_index[language.primary_extension] = language

      language.filenames.each do |filename|
        @filename_index[filename] << language
      end

      language
    end