make --alternate-language cli argument take precedence over detected language

This commit is contained in:
Alan Hamlett 2017-02-20 14:23:02 -08:00
parent 4ea96210f8
commit f52847d7e9
5 changed files with 95 additions and 10 deletions

View file

@ -82,8 +82,8 @@ def parseArguments():
help='optional alternate project name; auto-discovered project '+
'takes priority')
parser.add_argument('--alternate-language', dest='alternate_language',
help='optional alternate language name; auto-detected language'+
'takes priority')
help='optional alternate language name; if valid, takes priority '+
'over auto-detected language')
parser.add_argument('--hostname', dest='hostname', help='hostname of '+
'current machine.')
parser.add_argument('--disableoffline', dest='offline',

View file

@ -18,6 +18,7 @@ from .dependencies import DependencyParser
from .packages.pygments.lexers import (
ClassNotFound,
find_lexer_class,
get_lexer_by_name,
guess_lexer_for_filename,
)
@ -43,11 +44,15 @@ def get_file_stats(file_name, entity_type='file', lineno=None, cursorpos=None,
'cursorpos': cursorpos,
}
else:
language, lexer = guess_language(file_name)
language = standardize_language(alternate_language, plugin)
lexer = get_lexer(language)
if not language:
language, lexer = guess_language(file_name)
parser = DependencyParser(file_name, lexer)
dependencies = parser.parse()
if language is None and alternate_language:
language = standardize_language(alternate_language, plugin)
stats = {
'language': language,
'dependencies': dependencies,
@ -58,6 +63,19 @@ def get_file_stats(file_name, entity_type='file', lineno=None, cursorpos=None,
return stats
def get_lexer(language):
"""Return a Pygments Lexer object for the given language string."""
if not language:
return None
lexer_cls = find_lexer_class(language)
if lexer_cls:
return lexer_cls()
return None
def guess_language(file_name):
"""Guess lexer and language for a file.
@ -188,6 +206,9 @@ def number_lines_in_file(file_name):
def standardize_language(language, plugin):
"""Maps a string to the equivalent Pygments language."""
if not language:
return None
# standardize language for this plugin
if plugin:
plugin = plugin.split(' ')[-1].split('/')[0].split('-')[0]