Support language argument for non file types

This commit is contained in:
Alan Hamlett 2018-12-05 21:32:53 -08:00
parent 1d2318a937
commit ae834f679f
3 changed files with 54 additions and 33 deletions

View file

@ -41,31 +41,28 @@ log = logging.getLogger('WakaTime')
def get_file_stats(file_name, entity_type='file', lineno=None, cursorpos=None,
plugin=None, language=None, local_file=None):
if entity_type != 'file':
stats = {
'language': None,
'dependencies': [],
'lines': None,
'lineno': lineno,
'cursorpos': cursorpos,
}
else:
language, lexer = standardize_language(language, plugin)
"""Returns a hash of information about the entity."""
language = standardize_language(language, plugin)
stats = {
'language': language,
'dependencies': [],
'lines': None,
'lineno': lineno,
'cursorpos': cursorpos,
}
if entity_type == 'file':
lexer = get_lexer(language)
if not language:
language, lexer = guess_language(file_name, local_file)
language = use_root_language(language, lexer)
parser = DependencyParser(local_file or file_name, lexer)
dependencies = parser.parse()
stats = {
'language': language,
'dependencies': dependencies,
stats.update({
'language': use_root_language(language, lexer),
'dependencies': parser.parse(),
'lines': number_lines_in_file(local_file or file_name),
'lineno': lineno,
'cursorpos': cursorpos,
}
})
return stats
@ -222,22 +219,21 @@ def number_lines_in_file(file_name):
def standardize_language(language, plugin):
"""Maps a string to the equivalent Pygments language.
Returns a tuple of (language_str, lexer_obj).
Returns the standardized language string.
"""
if not language:
return None, None
return None
# standardize language for this plugin
if plugin:
plugin = plugin.split(' ')[-1].split('/')[0].split('-')[0]
standardized = get_language_from_json(language, plugin)
if standardized is not None:
return standardized, get_lexer(standardized)
return standardized
# standardize language against default languages
standardized = get_language_from_json(language, 'default')
return standardized, get_lexer(standardized)
return get_language_from_json(language, 'default')
def get_lexer(language):