MCPcopy Index your code
hub / github.com/FSoft-AI4Code/CodeText-parser / parse_file

Function parse_file

src/codetext/codetext_cli.py:10–77  ·  view source on GitHub ↗
(file_path: str, language: str = None, verbose: bool = False)

Source from the content-addressed store, hash-verified

8
9
10def parse_file(file_path: str, language: str = None, verbose: bool = False) -> List:
11 assert language != None, "Auto detect is not implemented, please specify language"
12 language = str(language).lower()
13 # assert (language in SUPPORT_LANGUAGE) == True, f"{language} is not supported"
14 assert os.path.isfile(file_path) == True, "File not found"
15
16 if verbose:
17 print(50 * "=")
18 print("Parse code into tree-sitter node")
19
20 content: str = open(file_path, "r").read()
21 root_node = parse_code(raw_code=content, language=language).root_node
22
23 if language == "python":
24 parser: LanguageParser = PythonParser
25 elif language == "java":
26 parser: LanguageParser = JavaParser
27 elif language == "javascript":
28 parser: LanguageParser = JavascriptParser
29 elif language == "go":
30 parser: LanguageParser = GoParser
31 elif language in ["c", "c++"]:
32 parser: LanguageParser = CppParser
33 elif language == "c#":
34 parser: LanguageParser = CsharpParser
35 elif language == "rust":
36 parser: LanguageParser = RustParser
37 elif language == "ruby":
38 parser: LanguageParser = RubyParser
39 elif language == "php":
40 parser: LanguageParser = PhpParser
41 else:
42 raise KeyError(f"{language} is not supported")
43
44 if verbose:
45 print(50 * "=")
46 print("Get node detail")
47
48 cls_list = parser.get_class_list(root_node)
49 method_list = []
50 cls_metadata = []
51 for _cls in cls_list:
52 cls_info = parser.get_class_metadata(_cls)
53 cls_info["code"] = get_node_text(_cls)
54
55 cls_method = []
56 current_class_methods = parser.get_function_list(_cls)
57 for method in current_class_methods:
58 method_info = parser.get_function_metadata(method)
59 method_info['code'] = get_node_text(method)
60 cls_method.append(method_info)
61
62 cls_info["method"] = cls_method
63 cls_metadata.append(cls_info)
64 method_list.extend(current_class_methods)
65
66 fn_list: List = parser.get_function_list(root_node)
67 for node in fn_list[:]:

Callers 1

mainFunction · 0.85

Calls 6

parse_codeFunction · 0.85
get_node_textFunction · 0.85
get_class_listMethod · 0.45
get_class_metadataMethod · 0.45
get_function_listMethod · 0.45
get_function_metadataMethod · 0.45

Tested by

no test coverage detected