31 lines
976 B
Python
31 lines
976 B
Python
from smnp.function.model import Function, CombinedFunction
|
|
from smnp.function.signature import varargSignature, signature
|
|
from smnp.type.model import Type
|
|
from smnp.type.signature.matcher.list import listOfMatchers, listMatches
|
|
from smnp.type.signature.matcher.type import allTypes, ofTypes
|
|
|
|
_signature1 = varargSignature(listMatches(ofTypes(Type.INTEGER, Type.STRING, Type.NOTE, Type.BOOL, Type.TYPE), allTypes()))
|
|
def _function1(env, vararg):
|
|
map = {}
|
|
for entry in vararg:
|
|
key, value = entry.value
|
|
map[key] = value
|
|
|
|
return Type.map(map)
|
|
|
|
|
|
_signature2 = signature(listOfMatchers(listMatches(ofTypes(Type.INTEGER, Type.STRING, Type.NOTE, Type.BOOL, Type.TYPE), allTypes())))
|
|
def _function2(env, list):
|
|
map = {}
|
|
for entry in list.value:
|
|
key, value = entry.value
|
|
map[key] = value
|
|
|
|
return Type.map(map)
|
|
|
|
|
|
function = CombinedFunction(
|
|
'Map',
|
|
Function(_signature1, _function1),
|
|
Function(_signature2, _function2)
|
|
) |