From eb5b1d2889aa5e408309f5d89989768ff19bc7f4 Mon Sep 17 00:00:00 2001
From: jwansek <eddie.atten.ea29@gmail.com>
Date: Mon, 17 Jan 2022 21:25:29 +0000
Subject: proved argparsing

---
 reflect.py | 28 ++++++++++++++++++++--------
 1 file changed, 20 insertions(+), 8 deletions(-)

(limited to 'reflect.py')

diff --git a/reflect.py b/reflect.py
index 90fa5b6..0ce886f 100644
--- a/reflect.py
+++ b/reflect.py
@@ -76,7 +76,8 @@ class Reflect:
             i[0]: (
                 i[1], 
                 {"comments": inspect.getcomments(i[1]), "doc": inspect.getdoc(i[1])}, 
-                str(inspect.signature(i[1]))
+                str(inspect.signature(i[1])),
+                inspect.getsource(i[1]) 
             )
             for i in inspect.getmembers(
                 self.get_classes(module_name)[class_name][0], 
@@ -89,7 +90,8 @@ class Reflect:
             i[0]: (
                 i[1], 
                 {"comments": inspect.getcomments(i[1]), "doc": inspect.getdoc(i[1])}, 
-                str(inspect.signature(i[1])) 
+                str(inspect.signature(i[1])),
+                inspect.getsource(i[1]) 
             )
             for i in inspect.getmembers(self.imported_modules[module_name]) 
             if inspect.isfunction(i[1])
@@ -141,6 +143,10 @@ class Reflect:
         # return inspect.getclasstree(classes)
         return tree
 
+    def get_source_code(self, file_, line_start, line_end):
+        with open(file=file_, mode="r") as f:
+            return f.readlines()[line_start:line_end]
+
 def gen_reflection_report(client_code_path, assessment_struct):
     reflection = Reflect(client_code_path)
     present_module_names = [i.name for i in reflection.client_modules]
@@ -195,8 +201,10 @@ def gen_reflection_report(client_code_path, assessment_struct):
                         out["files"][i][required_file]["classes"][j][class_name]["methods"][k][required_method]["present"] = False
                         continue
 
-                    out["files"][i][required_file]["classes"][j][class_name]["methods"][k][required_method]["arguments"] = present_methods[method_name][-1]
-                    out["files"][i][required_file]["classes"][j][class_name]["methods"][k][required_method]["documentation"] = present_methods[method_name][-2]
+                    out["files"][i][required_file]["classes"][j][class_name]["methods"][k][required_method]["arguments"] = present_methods[method_name][-2]
+                    out["files"][i][required_file]["classes"][j][class_name]["methods"][k][required_method]["minimum_arguments"] = present_methods[method_name][-2].count(",") + 1
+                    out["files"][i][required_file]["classes"][j][class_name]["methods"][k][required_method]["documentation"] = present_methods[method_name][-3]
+                    out["files"][i][required_file]["classes"][j][class_name]["methods"][k][required_method]["source_code"] =  present_methods[method_name][-1]
 
         if "functions" in required_files_features.keys():
             present_functions = reflection.get_functions(module_name)
@@ -210,8 +218,10 @@ def gen_reflection_report(client_code_path, assessment_struct):
                     out["files"][i][required_file]["functions"][j][required_function]["present"] = False
                     continue
 
-                out["files"][i][required_file]["functions"][j][required_function]["documentation"] = present_functions[function_name][-2]    
-                out["files"][i][required_file]["functions"][j][required_function]["arguments"] = present_functions[function_name][-1]    
+                out["files"][i][required_file]["functions"][j][required_function]["documentation"] = present_functions[function_name][-3]    
+                out["files"][i][required_file]["functions"][j][required_function]["arguments"] = present_functions[function_name][-2]    
+                out["files"][i][required_file]["functions"][j][required_function]["minimum_arguments"] = present_functions[function_name][-2].count(",") + 1    
+                out["files"][i][required_file]["functions"][j][required_function]["source_code"] = present_functions[function_name][-2]
 
     out["class_tree"] = reflection.get_class_tree()
     return out
@@ -221,5 +231,7 @@ if __name__ == "__main__":
     
     reflect = Reflect(user_code_path)
     reflect.import_module("pjtool")
-    for c, v in reflect.get_classes(("pjtool")).items():
-        print(c, v)
+    # for c, v in reflect.get_classes(("pjtool")).items():
+    #     print(c, v)
+    for k, v in reflect.get_functions("pjtool").items():
+        print(k, v)
\ No newline at end of file
-- 
cgit v1.2.3