casts.pyx 4.7 KB
#!/usr/bin/env python
# encoding: utf-8
# cython: profile=True

cdef inline int increment(object iterable, object test_string):
    cdef int count = 0
    cdef object thing
    for thing in iterable:
        if thing == test_string:
            count += 1
    return count

from Naked.toolshed.c.types import NakedObject, XFSet, XDict, XList, XQueue, XSet, XString
from Naked.settings import debug as DEBUG_FLAG

#------------------------------------------------------------------------------
# [ nob ] (NakedObject)
#  Cast a dictionary of attributes to a NakedObject with key>attribute mapping
#------------------------------------------------------------------------------
def nob(attributes={}):
    try:
        return NakedObject(attributes)
    except Exception as e:
        if DEBUG_FLAG:
            print("Naked Framework Error: unable to create a NakedObject with the requested argument using the nobj() function (Naked.toolshed.casts.py).")
        raise e

#------------------------------------------------------------------------------
# [ xd function ] (XDict)
#   Cast a Python dictionary to a XDict
#------------------------------------------------------------------------------
def xd(dictionary_arg, attributes={}):
    try:
        return XDict(dictionary_arg, attributes)
    except TypeError:
        raise TypeError("Attempted to cast to a XDict with an incompatible type")
    except Exception as e:
        if DEBUG_FLAG:
            print("Naked Framework Error: unable to cast object to a XDict with the xd() function (Naked.toolshed.casts.py).")
        raise e

#------------------------------------------------------------------------------
# [ xl function ] (XList)
#  Cast a Python list, set, or tuple to a XList
#------------------------------------------------------------------------------
def xl(list_arg, attributes={}):
    try:
        return XList(list_arg, attributes)
    except TypeError:
        raise TypeError("Attempted to cast to a XList with an incompatible type")
    except Exception as e:
        if DEBUG_FLAG:
            print("Naked Framework Error: unable to cast object to a XList with the xl() function (Naked.toolshed.casts.py).")
        raise e

#------------------------------------------------------------------------------
# [ xq function ] (XQueue)
#  Cast a Python list, set, tuple to a XQueue
#------------------------------------------------------------------------------
def xq(queue_arg, attributes={}):
    try:
        return XQueue(queue_arg, attributes)
    except TypeError:
        raise TypeError("Attempted to cast to a XQueue with an incompatible type")
    except Exception as e:
        if DEBUG_FLAG:
            print("Naked Framework Error: unable to cast object to a XQueue with the xq() function (Naked.toolshed.casts.py).")
        raise e

#------------------------------------------------------------------------------
# [ xset function ] (XSet)
#   Cast a Python set to a XSet
#------------------------------------------------------------------------------
def xset(set_arg, attributes={}):
    try:
        return XSet(set_arg, attributes)
    except TypeError:
        raise TypeError("Attempted to cast to a XSet with an incompatible type")
    except Exception as e:
        if DEBUG_FLAG:
            print("Naked Framework Error: unable to cast object to a XSet with the xset() function (Naked.toolshed.casts.py).")
        raise e

#------------------------------------------------------------------------------
# [ xfset function ] (XFSet)
#   Cast a Python set to a XFSet
#------------------------------------------------------------------------------
def xfset(set_arg, attributes={}):
    try:
        return XFSet(set_arg, attributes)
    except TypeError:
        raise TypeError("Attempted to cast to a XSet with an incompatible type")
    except Exception as e:
        if DEBUG_FLAG:
            print("Naked Framework Error: unable to cast object to a XSet with the xset() function (Naked.toolshed.casts.py).")
        raise e

#------------------------------------------------------------------------------
# [ xstr function ] (XString)
#  Cast a Python string to a XString
#------------------------------------------------------------------------------
def xstr(string_arg, attributes={}):
    try:
        return XString(string_arg, attributes)
    except TypeError as te:
        raise TypeError("Attempted to cast to a XString with an incompatible type")
    except Exception as e:
        if DEBUG_FLAG:
            print("Naked Framework Error: unable to cast object to a XString with the xstr() function (Naked.toolshed.casts.py).")
        raise e

if __name__ == '__main__':
    test = xstr("A test", {'arg1': '2'})
    print(test)
    print(test[0])
    print(test.arg1)
    print(type(test))