get_library_information method

dynamic get_library_information()

Implementation

get_library_information() {
  const PythonTypeMap = {
    "String": "str",
    "int": "int",
    "DateTime": "datetime"
  };
  InstanceMirror instance_mirror = reflect(library);
  var class_mirror = instance_mirror.type;
  // instance_mirror.invoke(memberName, positionalArguments)
  Map library_information = {
    '__intro__': {'doc': 'Library documentation'},
  };
  for (var v in class_mirror.declarations.values) {
    if (v is MethodMirror) {
      var props = {
        'args': [],
        'types': [],
        'doc': '',
      };
      var args = [];
      var types = [];
      var name = MirrorSystem.getName(v.simpleName);
      for (var p in v.parameters) {
        var name = MirrorSystem.getName(p.simpleName);
        var type = MirrorSystem.getName(p.type.simpleName);
        args.add(name);
        types.add(PythonTypeMap[type]);
      }
      props['args'] = args;
      props['types'] = types;
      library_information[name] = props;
    }
  }
  print('returned library info $library_information');
  return library_information;
}