Exemplo n.º 1
0
def getSwitch(_InstanceVariable,_MethodVariable=None):

	#Check
	if _MethodVariable==None:
		SwitchItemTuplesList=_InstanceVariable.SwitchMethodDict.items()
	elif type(_MethodVariable) in [list,tuple]:
		SwitchItemTuplesList=map(
			lambda __MethodStr:
			(
				__MethodStr,
				_InstanceVariable.SwitchMethodDict[__MethodStr]
			),
			_MethodVariable
		)
	else:
		SwitchItemTuplesList=[
			(
				_MethodVariable,
				_InstanceVariable.SwitchMethodDict[_MethodVariable]
			)
		]
		

	#Debug
	'''
	print('getSwitch l 266')
	print('_MethodVariable is ')
	print(_MethodVariable)
	print('SwitchItemTuplesList is ')
	print(SwitchItemTuplesList)
	print('')
	'''

	#return 
	WatchKeyStrsList=SYS.flat(
		SYS.flat(
			map(
				lambda __SwitchItemTuple:
				map(
					lambda __ClassStr:
					map(
						lambda __HookStr:
						'Watch'+__HookStr+SYS.getUpperWordStr(
							__SwitchItemTuple[0]
							)+'With'+SYS.getNameStrWithClassStr(
							__ClassStr
						)+'Bool',
						['Before','After']
					),
					map(lambda __Class:__Class.__name__,__SwitchItemTuple[1])
				),
				SwitchItemTuplesList
			)
		)
	)

	#Debug
	'''
	print('getSwitch l 300')
	print('WatchKeyStrsList is ')
	print(WatchKeyStrsList)
	print('WatchKeyStrsList is ')
	print(WatchKeyStrsList)
	print('')
	'''

	#return
	return dict(
				zip(
					WatchKeyStrsList,
					map(
						lambda __WatchKeyStr:
						getattr(_InstanceVariable,__WatchKeyStr),
						WatchKeyStrsList
					)
				)
			)
Exemplo n.º 2
0
	def do_mimic(self):
			
		#Debug
		'''
		print('l 174 Mimicker')
		print('self.MimickingDoMethodStr is ',self.MimickingDoMethodStr)
		print('')
		'''

		#Check
		if self.MimickingDoMethodStr!="":

			#observe
			self.observe(True,self.MimickingDoMethodStr)

			#set
			self.MimickedWrapMethodStr=MimickingWrapPrefixStr+self.MimickingDoMethodStr

			#Debug
			'''
			print('l 75 Mimicker ')
			print('self.MimickedWrapMethodStr is ',self.MimickedWrapMethodStr)
			print('')
			'''

			#Define
			MimickedDoStr=SYS.getUpperWordStr(
				self.MimickingDoMethodStr
			)
			MimickedDoerStr=Doer.DoStrToDoerStrOrderedDict[MimickedDoStr]

			#Debug
			'''
			print('l 84 Mimicker ')
			print('MimickedDoStr is ',MimickedDoStr)
			print('MimickedDoerStr is ',MimickedDoerStr)
			print('MimickedBaseModule is ',MimickedBaseModule)
			print('')
			'''

			#Definitions
			MimickedBaseClass=getattr(
				SYS,
				SYS.getClassStrWithNameStr(MimickedDoerStr)
			)

			#get
			MimickedDoExecStr=getattr(
				MimickedBaseClass,
				'Do'+MimickedBaseClass.NameStr+'ExecStr'
			)

			#debug
			'''
			print('l 206 Mimicker')
			print('MimickedDoExecStr is ')
			print(MimickedDoExecStr)
			print('')
			'''

			#replace
			MimickedDecorationMethodStr=MimickingDecorationPrefixStr+MimickingDecorationTagStr+MimickingDecorationSuffixStr
			MimickedDecorationMethodStr+=self.ObservedWrapMethodStr

			#Debug
			'''
			print('l 232 Mimicker')
			print('MimickedDecorationMethodStr is '+MimickedDecorationMethodStr)
			print('')
			'''
			
			#replace
			MimickedExecStr='def '+MimickedDecorationMethodStr+'('+'('.join(
				MimickedDoExecStr.split('(')[1:]
			)

			#Debug
			'''
			print('l 208 Mimicker')
			print('MimickedExecStr is ')
			print(MimickedExecStr)
			print('')
			'''
			
			#Add to the ImitatedDoneExecStr
			MimickedExecStr+='\n\treturn mimic(_InstanceVariable,*_LiargVariablesList,'
			MimickedExecStr+='**dict({\'MimicMethodStr\':\''+self.MimickedWrapMethodStr+'\','
			MimickedExecStr+='\'MimicClassStr\':\''+self.DoClass.__name__+'\','
			MimickedExecStr+='\'BaseClassStr\':\''+MimickedBaseClass.__name__+'\''
			MimickedExecStr+='},**_KwargVariablesDict))'
			
			#Debug
			'''
			print('l 223 Mimicker')
			print('MimickedExecStr is ')
			print(MimickedExecStr)
			print('')
			'''
			
			#exec
			six.exec_(MimickedExecStr)

			#set
			self.MimickedDecorationUnboundMethod=locals()[MimickedDecorationMethodStr]

			#set in the __class__
			self.setMethod(
						MimickedDecorationMethodStr,
						self.MimickedDecorationUnboundMethod
					)

			#make the amalgam
			self.setMethod(
						self.MimickingDoMethodStr,
						self.MimickedDecorationUnboundMethod
					)

			#set a pointer to the fundamental class
			self.MimickedDecorationUnboundMethod.BaseDoClass=MimickedBaseClass