Example #1
0
 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)
Example #2
0
    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)
Example #4
0
 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)
Example #5
0
 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)
Example #6
0
 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)