Пример #1
0
        string ICustomFormatter.Format(string format, object arg, IFormatProvider formatProvider)
        {
            var obj = arg as PyObject;

            if (obj != null)
            {
                var builder = new ReprBuilder(Options);
                builder.AppendRepr(obj);
                return(builder.ToString());
            }
            else if (format == "PY")
            {
                var builder = new ReprBuilder(Options);
                builder.AppendLiteral(arg);
                return(builder.ToString());
            }
            else if (format == "PTR")
            {
                if (Options.Is64Bit)
                {
                    return(string.Format("0x{0:X16}", arg));
                }
                else
                {
                    return(string.Format("0x{0:X8}", arg));
                }
            }
            else
            {
                var formattable = arg as IFormattable;
                if (formattable != null)
                {
                    return(formattable.ToString(format, formatProvider));
                }
                else if (arg != null)
                {
                    return(arg.ToString());
                }
                else
                {
                    return(null);
                }
            }
        }
Пример #2
0
 private ReprBuilder(ReprBuilder parent)
 {
     Options       = parent.Options;
     _visitedObjs  = parent._visitedObjs;
     _nestingLevel = parent._nestingLevel;
 }