raiseInterpreterException('bool.to_string() must have either no arguments or exactly two string arguments that signify what values to return for true and false.')
elifmethod_name=='to_int':
ifobj==True:
return1
else:
return0
else:
raiseInterpreterException('Unknown method "%s" for a boolean.'%method_name)
defint_method_call(self,obj,method_name,args):
obj=self.to_native(obj)
(posargs,_)=self.reduce_arguments(args)
ifmethod_name=='is_even':
iflen(posargs)==0:
returnobj%2==0
else:
raiseInterpreterException('int.is_even() must have no arguments.')
elifmethod_name=='is_odd':
iflen(posargs)==0:
returnobj%2!=0
else:
raiseInterpreterException('int.is_odd() must have no arguments.')
else:
raiseInterpreterException('Unknown method "%s" for an integer.'%method_name)
defstring_method_call(self,obj,method_name,args):
obj=self.to_native(obj)
(posargs,_)=self.reduce_arguments(args)
ifmethod_name=='strip':
returnobj.strip()
elifmethod_name=='format':
returnself.format_string(obj,args)
elifmethod_name=='to_upper':
returnobj.upper()
elifmethod_name=='to_lower':
returnobj.lower()
elifmethod_name=='underscorify':
returnre.sub(r'[^a-zA-Z0-9]','_',obj)
elifmethod_name=='split':
iflen(posargs)>1:
raiseInterpreterException('Split() must have at most one argument.')
eliflen(posargs)==1:
s=posargs[0]
ifnotisinstance(s,str):
raiseInterpreterException('Split() argument must be a string')
raiseInterpreterException('bool.to_string() must have either no arguments or exactly two string arguments that signify what values to return for true and false.')
elifmethod_name=='to_int':
ifobj==True:
return1
else:
return0
else:
raiseInterpreterException('Unknown method "%s" for a boolean.'%method_name)
defint_method_call(self,obj,method_name,args):
obj=self.to_native(obj)
(posargs,_)=self.reduce_arguments(args)
ifmethod_name=='is_even':
iflen(posargs)==0:
returnobj%2==0
else:
raiseInterpreterException('int.is_even() must have no arguments.')
elifmethod_name=='is_odd':
iflen(posargs)==0:
returnobj%2!=0
else:
raiseInterpreterException('int.is_odd() must have no arguments.')
else:
raiseInterpreterException('Unknown method "%s" for an integer.'%method_name)
defstring_method_call(self,obj,method_name,args):
obj=self.to_native(obj)
(posargs,_)=self.reduce_arguments(args)
ifmethod_name=='strip':
returnobj.strip()
elifmethod_name=='format':
returnself.format_string(obj,args)
elifmethod_name=='to_upper':
returnobj.upper()
elifmethod_name=='to_lower':
returnobj.lower()
elifmethod_name=='underscorify':
returnre.sub(r'[^a-zA-Z0-9]','_',obj)
elifmethod_name=='split':
iflen(posargs)>1:
raiseInterpreterException('Split() must have at most one argument.')
eliflen(posargs)==1:
s=posargs[0]
ifnotisinstance(s,str):
raiseInterpreterException('Split() argument must be a string')