Esempio n. 1
0
        public static async Task <PyString> __repr__(IInterpreter interpreter, FrameContext context, PyObject self)
        {
            var      asDict  = (PyDict)self;
            PyString retStr  = PyString.Create("{");
            int      visited = 0;

            foreach (var mapping in asDict.dict)
            {
                var key_repr = await __visit_repr((PyObject)mapping.Key, interpreter, context);

                retStr = (PyString)PyStringClass.__add__(retStr, key_repr);
                retStr = (PyString)PyStringClass.__add__(retStr, PyString.Create(": "));

                var val_repr = await __visit_repr((PyObject)mapping.Value, interpreter, context);

                retStr = (PyString)PyStringClass.__add__(retStr, val_repr);

                // Appending commas except on last paring
                if (visited < asDict.dict.Count - 1)
                {
                    retStr = (PyString)PyStringClass.__add__(retStr, PyString.Create(", "));
                }

                visited += 1;
            }
            return((PyString)PyStringClass.__add__(retStr, PyString.Create("}")));
        }
Esempio n. 2
0
        public static async Task <PyString> __repr__(IInterpreter interpreter, FrameContext context, PyObject self)
        {
            var      asTuple = (PyTuple)self;
            PyString retStr  = PyString.Create("(");

            for (int i = 0; i < asTuple.Values.Length; ++i)
            {
                var pyObj = asTuple.Values[i] as PyObject;
                if (pyObj == null)
                {
                    retStr = (PyString)PyStringClass.__add__(retStr, PyString.Create(asTuple.Values[i].ToString()));
                }
                else
                {
                    var __repr__      = pyObj.__getattribute__(PyClass.__REPR__);
                    var functionToRun = __repr__ as IPyCallable;

                    var returned = await functionToRun.Call(interpreter, context, new object[] { pyObj });

                    if (returned != null)
                    {
                        var asPyString = (PyString)returned;
                        retStr = (PyString)PyStringClass.__add__(retStr, asPyString);
                    }
                }

                // Appending commas except on last index
                if (i < asTuple.Values.Length - 1)
                {
                    retStr = (PyString)PyStringClass.__add__(retStr, PyString.Create(", "));
                }
            }
            return((PyString)PyStringClass.__add__(retStr, PyString.Create(")")));
        }
Esempio n. 3
0
        private static async Task <PyString> __visit_repr(object rawobj, IInterpreter interpreter, FrameContext context)
        {
            if (rawobj == null)
            {
                return(PyString.Create("null"));
            }
            if (!(rawobj is PyObject))
            {
                return(PyString.Create(rawobj.ToString()));
            }

            var obj = rawobj as PyObject;

            var __repr__      = obj.__getattribute__(PyClass.__REPR__);
            var functionToRun = __repr__ as IPyCallable;

            var returned = await functionToRun.Call(interpreter, context, new object[] { obj });

            if (returned != null)
            {
                return((PyString)returned);
            }
            else
            {
                return(null);
            }
        }
Esempio n. 4
0
        public static async Task <PyString> __repr__(IInterpreter interpreter, FrameContext context, PyObject self)
        {
            var      asList = (PyList)self;
            PyString retStr = PyString.Create("[");

            for (int i = 0; i < asList.list.Count; ++i)
            {
                var pyObj = asList.list[i];

                var __repr__      = pyObj.__getattribute__(PyClass.__REPR__);
                var functionToRun = __repr__ as IPyCallable;

                var returned = await functionToRun.Call(interpreter, context, new object[0]);

                if (returned != null)
                {
                    var asPyString = (PyString)returned;
                    retStr = (PyString)PyStringClass.__add__(retStr, asPyString);
                }

                // Appending commas except on last index
                if (i < asList.list.Count - 1)
                {
                    retStr = (PyString)PyStringClass.__add__(retStr, PyString.Create(", "));
                }
            }
            return((PyString)PyStringClass.__add__(retStr, PyString.Create("]")));
        }
Esempio n. 5
0
 public static PyString __repr__(PyObject self)
 {
     // Default __repr__
     // TODO: Switch to __class__.__name__
     // TODO: Switch to an internal Python object ID (probably when doing something like object subpooling)
     // Using the hashcode is definitely not the same as what Python is using.
     return(PyString.Create("<" + self.GetType().Name + " object at " + self.GetHashCode() + ">"));
 }
Esempio n. 6
0
        public static PyObject __add__(PyObject self, PyObject other)
        {
            PyString a, b;

            castOperands(self, other, out a, out b, "concatenation");
            var newPyString = PyString.Create(a.InternalValue + b.InternalValue);

            return(newPyString);
        }
Esempio n. 7
0
        public static PyObject __mul__(PyObject self, PyObject other)
        {
            PyString  a;
            PyInteger b;

            a = self as PyString;
            b = other as PyInteger;
            if (a == null)
            {
                throw new Exception("Tried to use a non-PyString for lvalue of: multiplication");
            }

            if (b == null)
            {
                // TODO: Try to realize this as a real TypeError object in some way.
                throw new Exception("TypeError: can't multiply sequence by non-int of type 'str'");
            }
            var newPyString = PyString.Create(string.Concat(Enumerable.Repeat(a.InternalValue, (int)b.InternalValue)));

            return(newPyString);
        }
Esempio n. 8
0
 public static new PyString __repr__(PyObject self)
 {
     return(PyString.Create(self.ToString()));
 }
Esempio n. 9
0
        public static PyString __repr__(PyObject self)
        {
            var asProxy = (PyDotNetClassProxy)self;

            return(PyString.Create("<" + asProxy.dotNetType.Name + " proxy object at " + self.GetHashCode() + ">"));
        }