def outputRoutine(self, Routine): outputDict = dict() if isinstance(Routine, PlatformDependentGenericRoutine): platformList = self.__outputPlatformDepRoutineList__(Routine) outputDict["platform_dep_list"] = platformList outputDict["name"] = Routine.getName() outputDict["package"] = Routine.getPackage().getName() outputDict["comments"] = Routine.getComment() outputDict["original_name"] = Routine.getOriginalName() outputDict["source_code"] = Routine.hasSourceCode() localVars = self.__outputAbstractVariables__(Routine.getLocalVariables()) outputDict["local_variables"] = localVars globalVars = self.__outputAbstractVariables__(Routine.getGlobalVariables()) outputDict["global_variables"] = globalVars nakedVars = self.__outputAbstractVariables__(Routine.getNakedGlobals()) outputDict["naked_globals"] = nakedVars markedItems = self.__outputAbstractVariables__(Routine.getMarkedItems()) outputDict["marked_items"] = markedItems labelRefs = self.__outputAbstractVariables__(Routine.getLabelReferences()) outputDict["label_references"] = labelRefs outputDict["referred_globals"] = self.__outputReferredGlobals__(Routine.getReferredGlobal()) outputDict["total_called_routines"] = Routine.getTotalCalled() outputDict["called_routines"] = self.__outputCallDepRoutines__(Routine.getCalledRoutines()) outputDict["caller_routines"] = self.__outputCallDepRoutines__(Routine.getCallerRoutines()) return json.dumps(outputDict)
def __postParsing__(self, Routine, CrossReference): routineDetail = routineTag.search(self._varName.strip()) if routineDetail: routineName = routineDetail.group('name') if not validRoutineName.search(routineName): logger.warning("invalid Routine Name: %s in routine:%s, package: %s" % (routineName, Routine, Routine.getPackage())) return if (routineName.startswith("%")): CrossReference.addPercentRoutine(routineName) # ignore mumps routine for now if CrossReference.isMumpsRoutine(routineName): return # routineName=routineName[1:] if CrossReference.routineNeedRename(routineName): routineName = CrossReference.getRenamedRoutineName(routineName) tag = "" if routineDetail.group('external'): tag += routineDetail.group('external') if routineDetail.group('tag'): tag += routineDetail.group('tag') if not CrossReference.hasRoutine(routineName): # automatically categorize the routine by the namespace # if could not find one, assign to Uncategorized defaultPackageName = "Uncategorized" (namespace, package) = CrossReference.categorizeRoutineByNamespace(routineName) if namespace and package: defaultPackageName = package.getName() CrossReference.addRoutineToPackageByName(routineName, defaultPackageName, False) routine = CrossReference.getRoutineByName(routineName) Routine.addCalledRoutines(routine, tag, self._varValue)
def __postParsing__(self, Routine, CrossReference): routineDetail = routineTag.search(self._varName.strip()) if routineDetail: routineName = routineDetail.group('name') if not validRoutineName.search(routineName): logger.warning( "invalid Routine Name: %s in routine:%s, package: %s" % (routineName, Routine, Routine.getPackage())) return if (routineName.startswith("%")): CrossReference.addPercentRoutine(routineName) # ignore mumps routine for now if CrossReference.isMumpsRoutine(routineName): return # routineName=routineName[1:] if CrossReference.routineNeedRename(routineName): routineName = CrossReference.getRenamedRoutineName(routineName) tag = "" if routineDetail.group('external'): tag += routineDetail.group('external') if routineDetail.group('tag'): tag += routineDetail.group('tag') if not CrossReference.hasRoutine(routineName): # automatically categorize the routine by the namespace # if could not find one, assign to Uncategorized defaultPackageName = "Uncategorized" (namespace, package ) = CrossReference.categorizeRoutineByNamespace(routineName) if namespace and package: defaultPackageName = package.getName() CrossReference.addRoutineToPackageByName( routineName, defaultPackageName, False) routine = CrossReference.getRoutineByName(routineName) Routine.addCalledRoutines(routine, tag, self._varValue)
def outputRoutine(self, Routine): outputDict = dict() if isinstance(Routine, PlatformDependentGenericRoutine): platformList = self.__outputPlatformDepRoutineList__(Routine) outputDict["platform_dep_list"] = platformList outputDict["name"] = Routine.getName() outputDict["package"] = Routine.getPackage().getName() outputDict["comments"] = Routine.getComment() outputDict["original_name"] = Routine.getOriginalName() outputDict["source_code"] = Routine.hasSourceCode() localVars = self.__outputAbstractVariables__( Routine.getLocalVariables()) outputDict["local_variables"] = localVars globalVars = self.__outputAbstractVariables__( Routine.getGlobalVariables()) outputDict["global_variables"] = globalVars nakedVars = self.__outputAbstractVariables__(Routine.getNakedGlobals()) outputDict["naked_globals"] = nakedVars markedItems = self.__outputAbstractVariables__( Routine.getMarkedItems()) outputDict["marked_items"] = markedItems labelRefs = self.__outputAbstractVariables__( Routine.getLabelReferences()) outputDict["label_references"] = labelRefs outputDict["referred_globals"] = self.__outputReferredGlobals__( Routine.getReferredGlobal()) outputDict["total_called_routines"] = Routine.getTotalCalled() outputDict["called_routines"] = self.__outputCallDepRoutines__( Routine.getCalledRoutines()) outputDict["caller_routines"] = self.__outputCallDepRoutines__( Routine.getCallerRoutines()) return json.dumps(outputDict)
def decodeRoutine(self, RoutineJson): crossRef = self._crossRef assert 'name' in RoutineJson assert 'package' in RoutineJson routineName = RoutineJson['name'] packageName = RoutineJson['package'] hasSourceCode = False if "source_code" in RoutineJson: hasSourceCode = RoutineJson['source_code'] if not crossRef.hasRoutine(RoutineJson['name']): crossRef.addRoutineToPackageByName(routineName, packageName, hasSourceCode) Routine = crossRef.getRoutineByName(routineName) assert Routine.getPackage().getName() == packageName self.__setRoutineProperties__(Routine, RoutineJson) for item in ('local_variables', 'global_variables', 'marked_items', 'label_references', 'naked_globals'): self.__handleAbstractVariables__(item, Routine, RoutineJson) self.__handleReferredGlobals__(Routine, RoutineJson) self.__handleCalledRoutines__(Routine, RoutineJson)