Simpler lexer yaml format

Fixes #25
This commit is contained in:
Joshua Peek
2011-07-02 20:07:34 -05:00
parent 302f8763b7
commit 7f6494be1a
3 changed files with 1659 additions and 1929 deletions

View File

@@ -8,18 +8,19 @@ print "# Pygments version %s" % __version__
print "---"
for name, aliases, filenames, mimetypes in get_all_lexers():
print "- !ruby/struct:Linguist::Lexer"
print "%s:" % name
print " name: %s" % name
if any(aliases):
print " aliases:"
for alias in aliases:
print " - '%s'" % alias
print " aliases: !ruby/array"
for alias in aliases:
print " - %s" % alias
if any(filenames):
print " filenames:"
for filename in filenames:
print " - '%s'" % filename
print " filenames: !ruby/array"
for filename in filenames:
print " - %s" % filename
print " mimetypes: !ruby/array"
for mimetype in mimetypes:
print " - %s" % mimetype
if any(mimetypes):
print " mimetypes:"
for mimetype in mimetypes:
print " - '%s'" % mimetype

View File

@@ -15,6 +15,46 @@ module Linguist
@alias_index = {}
@mimetypes_index = {}
# Internal: Create a new Lexer object
#
# name - Name of Lexer
# attrs - A hash of attributes
#
# Returns a Lexer object
def self.create(name, attrs)
name = name
aliases = attrs['aliases'] || []
filenames = attrs['filenames'] || []
mimetypes = attrs['mimetypes'] || []
@lexers << lexer = new(name, aliases, filenames, mimetypes)
# All Lexer names should be unique. Warn if there is a duplicate.
if @name_index.key?(lexer.name)
warn "Duplicate lexer name: #{lexer.name}"
end
@index[lexer.name] = @name_index[lexer.name] = lexer
lexer.aliases.each do |name|
# All Lexer aliases should be unique. Warn if there is a duplicate.
if @alias_index.key?(name)
warn "Duplicate alias: #{name}"
end
@index[name] = @alias_index[name] = lexer
end
lexer.mimetypes.each do |type|
# All Lexer mimetypes should be unique. Warn if there is a duplicate.
if @mimetypes_index.key?(name)
warn "Duplicate mimetype: #{name}"
end
@mimetypes_index[type] = lexer
end
end
# Internal: Test if system has Pygments
#
# Only used in tests to disable tests that require Pygments.
@@ -130,33 +170,8 @@ module Linguist
#
# `bin/pygments-lexers` dumps a YAML list of all the available
# Pygments lexers.
YAML.load_file(File.expand_path("../lexers.yml", __FILE__)).each do |lexer|
@lexers << lexer
# All Lexer names should be unique. Warn if there is a duplicate.
if @name_index.key?(lexer.name)
warn "Duplicate lexer name: #{lexer.name}"
end
@index[lexer.name] = @name_index[lexer.name] = lexer
lexer.aliases.each do |name|
# All Lexer aliases should be unique. Warn if there is a duplicate.
if @alias_index.key?(name)
warn "Duplicate alias: #{name}"
end
@index[name] = @alias_index[name] = lexer
end
lexer.mimetypes.each do |type|
# All Lexer mimetypes should be unique. Warn if there is a duplicate.
if @mimetypes_index.key?(name)
warn "Duplicate mimetype: #{name}"
end
@mimetypes_index[type] = lexer
end
YAML.load_file(File.expand_path("../lexers.yml", __FILE__)).each do |name, attrs|
Lexer.create(name, attrs)
end
end
end

File diff suppressed because it is too large Load Diff