#----------------------------------------------------------------------------
+def ensureString( s ) :
+
+ if isinstance( s , str ) :
+ return s
+ elif isinstance( s , unicode ) :
+ return s.encode( 'ascii' , 'ignore' )
+ else :
+ return str( s )
+
def ensureCallable( e ) :
if not callable( e ) :
'''
def fun( context ) :
return Sequence( context.getVariable( name ) )
- fun.__name__ = '_var_%s_' % name
+ fun.__name__ = '_var_%s_' % ensureString( name )
return fun
def fun( context ) :
args = map( lambda f : f( context ) , fargs )
return fn( context , *args )
- fun.__name__ = '_fn_%s_' % functionName
+ fun.__name__ = '_fn_%s_' % ensureString( functionName )
else :
#
# Unknown function. Resolution at run-time
assertFunctionArity( fn , functionName , len( fargs ) , 1 )
args = map( lambda f : f( context ) , fargs )
return fn( context , *args )
- fun.__name__ = '_fn[rt]_%s_' % functionName
+ fun.__name__ = '_fn[rt]_%s_' % ensureString( functionName )
return fun
def makeFilter( exprlist , predicates ) :
arg = ensureCallable( arg )
def fun( context ) :
return op( context , arg( context ) )
- fun.__name__ = '_op1_%s_' % opName
+ fun.__name__ = '_op1_%s_' % ensureString( opName )
return fun
def makeBinary( opName , arg1 , arg2 ) :
else :
def fun( context ) :
return op( context , arg1( context ) , arg2( context ) )
- fun.__name__ = '_op2_%s_' % opName
+ fun.__name__ = '_op2_%s_' % ensureString( opName )
return fun
def makeFor( clauses , returnExpr ) :