# class Pygments::Lexer

### Public Class Methods

[](name) click to toggle source

Public: Alias for find.

    # File lib/pygments/lexer.rb, line 72
    def self.[](name)
      find(name)
    end

all() click to toggle source

Public: Get all Lexers

Returns an Array of Lexers

    # File lib/pygments/lexer.rb, line 55
    def self.all
      @lexers
    end

create(hash) click to toggle source

Internal: Create a new Lexer object

hash - A hash of attributes

Returns a Lexer object

    # File lib/pygments/lexer.rb, line 15
    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

find(name) click to toggle source

Public: Look up Lexer by name or alias.

name - A String name or alias

    Lexer.find('Ruby')
    => #<Lexer name="Ruby">

Returns the Lexer or nil if none was found.

    # File lib/pygments/lexer.rb, line 67
    def self.find(name)
      @index[name.to_s.downcase]
    end

find_by_alias(name) click to toggle source

Public: Look up Lexer by one of its aliases.

name - A String alias of the Lexer

Examples

    Lexer.find_by_alias('rb')
    # => #<Lexer name="Ruby">

Returns the Lexer or nil if none was found.

    # File lib/pygments/lexer.rb, line 100
    def self.find_by_alias(name)
      @alias_index[name]
    end

find_by_extname(extname) click to toggle source

Public: Look up Lexer by one of it's file extensions.

extname - A String file extension.

Examples

    Lexer.find_by_extname('.rb')
    # => #<Lexer name="Ruby">

Returns the Lexer or nil if none was found.

    # File lib/pygments/lexer.rb, line 114
    def self.find_by_extname(extname)
      @extname_index[extname]
    end

find_by_mimetype(type) click to toggle source

Public: Look up Lexer by one of it's mime types.

type - A mime type String.

Examples

    Lexer.find_by_mimetype('application/x-ruby')
    # => #<Lexer name="Ruby">

Returns the Lexer or nil if none was found.

    # File lib/pygments/lexer.rb, line 128
    def self.find_by_mimetype(type)
      @mimetypes_index[type]
    end

find_by_name(name) click to toggle source

Public: Look up Lexer by its proper name.

name - The String name of the Lexer

Examples

    Lexer.find_by_name('Ruby')
    # => #<Lexer name="Ruby">

Returns the Lexer or nil if none was found.

    # File lib/pygments/lexer.rb, line 86
    def self.find_by_name(name)
      @name_index[name]
    end

### Public Instance Methods

highlight(text, options = {}) click to toggle source

Public: Highlight syntax of text

text - String of code to be highlighted options - Hash of options (defaults to {})

Returns html String

    # File lib/pygments/lexer.rb, line 138
    def highlight(text, options = {})
      options[:lexer] = aliases.first
      Pygments.highlight(text, options)
    end