Exemplo n.º 1
0
 public PythonTuple decode(CodeContext /*!*/ context, string @string, [DefaultParameterValue("strict")] string errors)
 {
     return(PythonTuple.MakeTuple(
                StringOps.DoDecode(context, @string, errors, _encName, _encoding),
                @string.Length
                ));
 }
Exemplo n.º 2
0
 public PythonTuple decode(CodeContext /*!*/ context, string @string, string errors = "strict")
 {
     return(PythonTuple.MakeTuple(
                StringOps.DoDecode(context, @string, errors, _encName, _encoding),
                @string.Length
                ));
 }
Exemplo n.º 3
0
        public static object decode(CodeContext /*!*/ context, object obj, string encoding = null, string errors = "strict")
        {
            if (encoding == null)
            {
                if (obj is IList <byte> bytesLikeObj)
                {
                    PythonContext lc = context.LanguageContext;
                    return(StringOps.DoDecode(context, bytesLikeObj, errors, lc.GetDefaultEncodingName(), lc.DefaultEncoding, final: true, out _));
                }
                else
                {
                    throw PythonOps.TypeError("expected bytes-like object, got {0}", PythonTypeOps.GetName(obj));
                }
            }
            PythonTuple t = lookup(context, encoding);

            return(PythonOps.GetIndex(context, PythonCalls.Call(context, t[DecoderIndex], obj, errors), 0));
        }
Exemplo n.º 4
0
        private static PythonTuple CharmapDecodeWorker(CodeContext context, IList <byte> input, string errors, Encoding e)
        {
            if (input.Count == 0)
            {
                return(PythonTuple.MakeTuple(string.Empty, 0));
            }

            string encoding = "charmap";

            // default to latin-1 if an encoding is not specified
            if (e == null)
            {
                e        = Encoding.GetEncoding("iso-8859-1");
                encoding = "latin-1";
            }

            var res = StringOps.DoDecode(context, input, errors, encoding, e);

            return(PythonTuple.MakeTuple(res, res.Length));
        }
Exemplo n.º 5
0
        private static PythonTuple CharmapDecodeWorker(CodeContext context, string input, string errors, Encoding e, bool isDecode)
        {
            if (input.Length == 0)
            {
                return(PythonTuple.MakeTuple(String.Empty, 0));
            }

            string encoding = "charmap";

            // default to latin-1 if an encoding is not specified
            if (e == null)
            {
                e        = Encoding.GetEncoding("iso-8859-1");
                encoding = "latin-1";
            }

            string res = isDecode ? StringOps.DoDecode(context, input, errors, encoding, e) : StringOps.DoEncode(context, input, errors, encoding, e).ToString();

            return(PythonTuple.MakeTuple(res, res.Length));
        }
Exemplo n.º 6
0
        private static PythonTuple DoDecode(CodeContext context, string encodingName, Encoding encoding, object input, string errors, bool final)
        {
            // input should be character buffer of some form...
            string res;

            if (!Converter.TryConvertToString(input, out res))
            {
                if (input is Bytes tempBytes)
                {
                    res = tempBytes.ToString();
                }
                else
                {
                    throw PythonOps.TypeErrorForBadInstance("argument 1 must be string, got {0}", input);
                }
            }

            var decoded = StringOps.DoDecode(context, res, errors, encodingName, encoding, final, out int numBytes);

            return(PythonTuple.MakeTuple(decoded, numBytes));
        }
Exemplo n.º 7
0
 public static object decode(CodeContext /*!*/ context, object?obj, [NotNull, DisallowNull] string?encoding = null, [NotNull] string errors = "strict")
 {
     if (encoding == null)
     {
         if (obj is IList <byte> bytesLikeObj)
         {
             PythonContext lc = context.LanguageContext;
             return(StringOps.DoDecode(context, bytesLikeObj, errors, lc.GetDefaultEncodingName(), lc.DefaultEncoding));
         }
         else
         {
             throw PythonOps.TypeError("expected bytes-like object, got {0}", PythonTypeOps.GetName(obj));
         }
     }
     else
     {
         object?decoder = lookup(context, encoding)[DecoderIndex];
         if (!PythonOps.IsCallable(context, decoder))
         {
             throw PythonOps.TypeError("decoding with '{0}' codec failed; decoder must be callable ('{1}' object is not callable)", encoding, PythonTypeOps.GetName(decoder));
         }
         return(PythonOps.GetIndex(context, PythonCalls.Call(context, decoder, obj, errors), 0));
     }
 }
Exemplo n.º 8
0
        private static Tuple <string, int> DoDecode(CodeContext context, string encodingName, Encoding encoding, [BytesConversion] IList <byte> input, string errors, bool final)
        {
            var decoded = StringOps.DoDecode(context, input, errors, encodingName, encoding, final, out int numBytes);

            return(Tuple.Create(decoded, numBytes));
        }
Exemplo n.º 9
0
 public string decode(CodeContext /*!*/ context, [NotNull] Encoding encoding, [NotNull] string errors = "strict")
 {
     return(StringOps.DoDecode(context, _bytes, errors, StringOps.GetEncodingName(encoding, normalize: false), encoding));
 }