class Pygments::LexerCache
Attributes
alias_index[R]
@return [Map<String, Lexer]
extname_index[R]
@return [Map<String, Lexer>]
index[R]
@return [Map<String, Lexer>]
lexers[R]
@return [Array<Lexer>]
mimetypes_index[R]
@return [Map<String, Lexer>]
name_index[R]
@return [Map<String, Lexer>]
raw_lexers[R]
Public Class Methods
new()
click to toggle source
# File lib/pygments/lexer.rb, line 127 def initialize @lexers = [] @index = {} @name_index = {} @alias_index = {} @extname_index = {} @mimetypes_index = {} @raw_lexers = Pygments.lexers! @raw_lexers.each_value do |hash| lexer = 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 |the_extname| @extname_index[the_extname] = lexer @index[the_extname.downcase.sub(/^\./, '')] ||= lexer end end lexer.mimetypes.each do |type| @mimetypes_index[type] = lexer end end end