from ..conversions import *
from ..func_utils import *


def Array(this, args):
    return ArrayConstructor(args, args.space)


def ArrayConstructor(args, space):
    if len(args) == 1:
        l = get_arg(args, 0)
        if type(l) == float:
            if to_uint32(l) == l:
                return space.NewArray(l)
            else:
                raise MakeError(
                    'RangeError',
                    'Invalid length specified for Array constructor (must be uint32)'
                )
        else:
            return space.ConstructArray([l])
    else:
        return space.ConstructArray(list(args))


def isArray(this, args):
    x = get_arg(args, 0)
    return is_object(x) and x.Class == u'Array'