self.create

in lib/pygments/lexer.rb [14:50]


    def self.create(hash)
      lexer = new(hash[:name], hash[:aliases], hash[:filenames], hash[:mimetypes])

      @lexers << lexer

      @index[lexer.name.downcase] = @name_index[lexer.name] = lexer

      lexer.aliases.each do |name|
        @alias_index[name] = lexer
        @index[name.downcase] ||= lexer
      end

      lexer.filenames.each do |filename|
        extnames = []

        extname = File.extname(filename)
        if m = extname.match(/\[(.+)\]/)
          m[1].scan(/./).each do |s|
            extnames << extname.sub(m[0], s)
          end
        elsif extname != ""
          extnames << extname
        end

        extnames.each do |extname|
          @extname_index[extname] = lexer
          @index[extname.downcase.sub(/^\./, "")] ||= lexer
        end
      end

      lexer.mimetypes.each do |type|
        @mimetypes_index[type] = lexer
      end

      lexer
    end