A semantic search engine for source code https://bitshift.benkurtovic.com/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

41 lines
874 B

  1. from .python import parse_py
  2. from .c import parse_c
  3. from ..languages import LANGS
  4. import pygments.lexers as pgl
  5. _all__ = ["parse"]
  6. def _lang(codelet):
  7. """
  8. Private function to identify the language of a codelet.
  9. :param codelet: The codelet object to identified.
  10. :type code: Codelet
  11. .. todo::
  12. Modify function to incorporate tags from stackoverflow.
  13. """
  14. if codelet.filename is not None:
  15. return pgl.guess_lexer_for_filename(codelet.filename).name
  16. return LANGS.index(pgl.guess_lexer(codelet.code))
  17. def parse(codelet):
  18. """
  19. Dispatch codelet to correct parser by language of code.
  20. :param codelet: The codelet object to parsed.
  21. :type code: Codelet
  22. """
  23. lang = _lang(codelet)
  24. if lang == LANGS.index("Python"):
  25. parse_py(codelet)
  26. elif lang == LANGS.index("C"):
  27. parse_c(codelet)