| @@ -4,6 +4,9 @@ from .python import parse_py | |||||
| _all__ = ["parse"] | _all__ = ["parse"] | ||||
| class UnsupportedFileError(Exception): | |||||
| pass | |||||
| def _lang(codelet): | def _lang(codelet): | ||||
| """ | """ | ||||
| Private function to identify the language of a codelet. | Private function to identify the language of a codelet. | ||||
| @@ -16,10 +19,13 @@ def _lang(codelet): | |||||
| Modify function to incorporate tags from stackoverflow. | Modify function to incorporate tags from stackoverflow. | ||||
| """ | """ | ||||
| if codelet.filename is not None: | |||||
| return pgl.guess_lexer_for_filename(codelet.filename).name | |||||
| try: | |||||
| if codelet.filename is not None: | |||||
| return pgl.guess_lexer_for_filename(codelet.filename, '').name | |||||
| return LANGS.index(pgl.guess_lexer(codelet.code)) | |||||
| return LANGS.index(pgl.guess_lexer(codelet.code)) | |||||
| except: | |||||
| raise UnsupportedFileError('Could not find a lexer for the codelet\'s filename') | |||||
| def _recv_data(server_socket): | def _recv_data(server_socket): | ||||
| """ | """ | ||||
| @@ -61,6 +67,9 @@ def _recv_data(server_socket): | |||||
| def parse(codelet): | def parse(codelet): | ||||
| """ | """ | ||||
| Dispatches the codelet to the correct parser based on its language. | Dispatches the codelet to the correct parser based on its language. | ||||
| It is the job of the respective parsers to accumulate data about the | |||||
| code and to convert it into a string representing a python dict. | |||||
| The codelet is then given dict as its 'symbols' field. | |||||
| :param codelet: The codelet object to parsed. | :param codelet: The codelet object to parsed. | ||||
| @@ -68,6 +77,7 @@ def parse(codelet): | |||||
| """ | """ | ||||
| lang = _lang(codelet); source = codelet.code | lang = _lang(codelet); source = codelet.code | ||||
| codelet.language = lang | |||||
| server_socket_number = 5000 + lang | server_socket_number = 5000 + lang | ||||
| if lang == LANGS.index('Python'): | if lang == LANGS.index('Python'): | ||||